2012-07-13 10 views
5

używam poniższy kod, żeby dostać mój widok z mojego kontrolera:Uzyskiwanie widoku kontrolera NSView, jeśli jest to klasa niestandardowa?

CollectionItemView *myView = [self view]; 

To działa całkiem dobrze, ale pojawia się ostrzeżenie Incompatible pointer types initializing CollectionItemView __strong with an expression of type NSView. Rozumiem, dlaczego to uzyskać, ale czy można go zignorować, czy powinienem zastąpić właściwość widoku?

Chuck

Odpowiedz

2

Jeżeli jesteś pewien, że [self view] jest CollectionItemView prostu zrobić:

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

lub (co jest lepsze) można użyć:

id myView = [self view]; 
0

Nie ma potrzeby, aby zastąpić to. Troolee zasugerował już dwa działające rozwiązania. Jednak po to, by zostać zbawionym, wolałbym napisać to inaczej.

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

Krótsza wersja bez testu isKindOfClass jest ok, gdy wiesz na pewno, z kontekstu, że obiekt musi być typu CollectionItemView lub jego podklasy.

Powiązane problemy