Сохраняет ли UINavigationBar UINavigationItems в свой стек? - PullRequest
1 голос
/ 21 июня 2010

Сохраняет ли UINavigationBar элементы навигации, помещенные в его стек?Другими словами, после этого:

_myNavItem = [[UINavigationItem alloc]initWithTitle:@"Home"];
[self.navBar pushNavigationItem:_myNavItem animated:NO];

нужно ли мне выпускать _myNavItem с:

    [_myNavItem release];

, чтобы избежать утечки памяти?

Также,как мне вообще узнать, будет ли объект сохранен?Это просто соглашение, что любая коллекция Objective C сохраняет право собственности на все элементы, добавленные в нее?

Ответы [ 2 ]

3 голосов
/ 21 июня 2010

В описании класса ADC UINavigationBar упоминается при определении свойства items, в котором хранятся все контроллеры UIViewControls, помещенные в стек навигации с помощью NSArray.

Переход к Ссылка на класс NSArray , заявлено, что реализация по умолчанию класса NSArray сохраняет каждый вставленный в него объект и освобождает его при удалении.

Соединяя эти две вещи, можно безопасноподразумевается, что UINavigationController сохраняет все свои контроллеры UIViewController, когда они помещаются в стек.

2 голосов
/ 21 июня 2010

Да, UINavigationBar сохраняет свое UINavigationItems.Точно так же, как NSArray или NSDictionary сохраняет свои объекты, так же, как и UINavigationBar.

...