Получение представления NSViewController, если это пользовательский класс?
Я использую следующий код, чтобы получить мое представление из моего контроллера:
CollectionItemView *myView = [self view];
Это работает довольно хорошо, но я получаю предупреждение Incompatible pointer types initializing CollectionItemView __strong with an expression of type NSView
. Я понимаю, почему я получаю это, но это нормально, чтобы игнорировать его или я должен перезаписать свойство view ?
Чак
2 ответа:
Если вы уверены, что
[self view]
являетсяCollectionItemView
просто сделайте:CollectionItemView *myView = (CollectionItemView*)[self view];
Или (что лучше) вы можете использовать:
id myView = [self view];
Нет необходимости переписывать его. Трули уже предложил два рабочих решения. Однако, просто чтобы сохранить, я бы предпочел кодировать его по-другому.
CollectionItemView *myView = nil; if ([[self view] isKindOfClass:[CollectionItemView class]) self.view = (CollectionItemView*)[self view];
Более короткая версия без теста isKindOfClass подходит, если вы точно знаете из контекста, что объект должен иметь тип CollectionItemView или любой из его подклассов.