iphone cocoa "ошибка: запрос члена ____ в чем-то, не являющемся структурой или объединением" - PullRequest
1 голос
/ 24 мая 2009

так работает:

type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil];
viewController.parentViewController = self;
self.type1ViewController = viewController;
[self.view insertSubview:viewController.view atIndex:0];
[viewController release];

но таким образом я получаю ошибку "запрос на член parentViewController в чем-то, не являющемся структурой или объединением":

type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil];
self.type1ViewController = viewController;
self.type1ViewController.parentViewController = self;
[self.view insertSubview:viewController.view atIndex:0];
[viewController release];

Я не понимаю, почему это должно быть иначе. Что видит компилятор, что ему не нравится? Заранее спасибо за помощь

Ответы [ 3 ]

4 голосов
/ 24 мая 2009

Когда вы вызываете self.type1ViewController.parentViewController вместо viewController.parentViewController, это дает вам ошибку, потому что вы объявили self.type1ViewController как некоторый суперкласс, а не type1ViewController. Когда компилятор смотрит на это объявление, он не найдет свойство parentViewController, поэтому выдает ошибку.

В первом примере ваш viewController по-прежнему объявлен как type1ViewController, поэтому он работает нормально. Во втором примере он все равно будет работать, если вы приведете его к type1ViewController, но, конечно, лучше просто изменить объявление.

0 голосов
/ 17 декабря 2010

Я бы также проверил ваш файл NIB для вашего Type1ViewController. Я столкнулся с проблемами, из-за которых эта ошибка возникала в ссылочных точках на кончике, которые искали что-то, кроме созданного мной пользовательского контроллера просмотра.

0 голосов
/ 11 сентября 2009

Если свойство type1ViewController объекта ParentViewController объявлено с классом Type1ViewController, то первая строка должна выглядеть следующим образом:

Type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil];

не

type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil];

Обратите внимание на заглавные буквы. Я на самом деле немного удивлен, что это скомпилировано без ошибок и предупреждений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...