Предупреждение анализатора: «Неверное уменьшение счетчика ссылок» для UITabBarController - PullRequest
0 голосов
/ 08 апреля 2011

Описание:

Допустим, у меня есть класс, который содержит UITabBarController и несколько контроллеров.

Теперь один из контроллеров ( specialController ) не может быть выбран UITabBarController. Я показываю его по-другому (но я все еще хочу, чтобы он в 1011 * viewControllers)

При запрете выбора specialController я пропускаю init, выполненный UITabBarController. Вот почему я называю init от руки.

Проблема:

Когда я запускаю «Build and Analyzie», я получаю предупреждение

Неправильное уменьшение счетчика ссылок объекта, который на данный момент не принадлежит вызывающему абоненту

в соответствии с моим init. Но приложение работает. Чего мне не хватает?

Код:

в классе A.m

//called in viewDidLoad
- (void)makeVoodooOnViewControllers {
    //set all variables etc.
    for (int i = 0; i<controllersCount; i++) {
      UIViewController *tabViewController = [tabBarController.viewControllers
                                                             objectAtIndex:i];
     //CUT - some irrelevant code

     if ([tabViewController isKindOfClass:[specialController class]]) {
       //line below throws a warning
       specialControllerProperty = [((specialController *)tabViewController) init];
     }
}

Если мне не ясно, пожалуйста, дайте мне знать :). Спасибо!

1 Ответ

0 голосов
/ 08 апреля 2011

Как контроллеры представления попадают в массив tabBarController.viewControllers?

Если они настроены в файле xib, тогда init вызывается как часть их реанимации из xib и не должен вызываться снова.Практически никогда не требуется вызывать init где-либо, кроме как сразу после вызова alloc.Наличие распределенного, но унифицированного объекта, висящего вокруг, кажется очень (очень!) Редкой и вряд ли желательной ситуацией ...

По сути, наличие контроллера в списке контроллеров контроллера вкладки, который не являетсяЧасть контроллеров с контроллерами вкладок кажется плохой дизайнерской идеей - противостоять ожиданиям и дизайну класса контроллеров вкладок ... и, таким образом, это может вызвать проблемы.

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