2012-07-13 14 views
5

Io uso il seguente codice per ottenere la mia vista dal mio controllo:Ottenere una vista di NSViewController se si tratta di una classe personalizzata?

CollectionItemView *myView = [self view]; 

Questo funziona abbastanza bene, ma ho l'avvertimento Incompatible pointer types initializing CollectionItemView __strong with an expression of type NSView. Capisco perché ottengo questo, ma è giusto ignorarlo o devo sovrascrivere la proprietà della vista?

mandrino

risposta

2

Se si è certi che [self view] è CollectionItemView basta fare:

CollectionItemView *myView = (CollectionItemView*)[self view]; 

o (che è meglio) è possibile utilizzare:

id myView = [self view]; 
0

Non v'è alcuna necessità di sovrascrivere esso. troolee ha già suggerito due soluzioni operative. Tuttavia, solo per essere salvati, preferirei codificarlo diversamente.

CollectionItemView *myView = nil; 
if ([[self view] isKindOfClass:[CollectionItemView class]) 
    self.view = (CollectionItemView*)[self view]; 

La versione più corta senza prova isKindOfClass è ok quando si sa per certo dal contesto che l'oggetto deve essere di tipo CollectionItemView o una qualsiasi delle sue sottoclassi.

Problemi correlati