Вопрос

У меня есть приложение для iPhone навигация. Когда вы нажимаете на ячейку в таблице, новый UIViewController навигация навигационного стека. В этом контроллере просмотра я устанавливаю пользовательский заголовок SymitView в методе ViewDidload:

- (void)viewDidLoad {
    [super viewDidLoad];

    // Setup custom navigation title
    [self setTitle:@"Mediaportal"];
    navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];
    [navItem setTitle:[theServer name]];
    [navItem setSubTitle:@""];
    [self.navigationItem setTitleView:navItem.view];

…
}

Как только я вернусь к rootViewController:

[self.navigationController popToRootViewControllerAnimated:YES];

Приложение вылетает со следующей ошибкой (nszombieenabled = yes):

*** -[CALayer retain]: message sent to deallocated instance 0x5a5fd80

Из того, что я могу видеть, rootViewController все еще пытается получить доступ к пользовательскому заголовку ViewView, который был отделен с контроллером второго представления. Как только я прокомментирующую пользовательскую часть TITELVIEW VIEW в моем коде, приложение работает. Я пытался установить NAVIURYITEM.TITLEVIEW к NIL (как можно найти в Apple Docs) до того, как второй ViewController отделен, но это не помогает.

У вас есть намек на то, что я могу сделать, чтобы предотвратить этот сбой?

Спасибо, отметьте.

Это было полезно?

Решение 2

Я наконец нашел решение для него (довольно простого). Я должен alloc и init Navitem через свою собственность, то он сохраняется:

self.navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];

Другие советы

У меня была такая же ошибка в месяц или около того назад, точно такая же ситуация. Он поехал мне орехи.

Я обнаружил, что ViewController I Seakping тоже не был освобожден вообще. У меня был пользовательский подкласс Uibutton, добавленный к этому представлению, однако, что было освобождено, когда второй взгляд был нажат. Поэтому, когда выскакивается, Uibutton не был там.

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

Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top