UINavigationBar是否保留推送到其堆栈的导航项?换句话说,在这之后:
_myNavItem = [[UINavigationItem alloc]initWithTitle:@"Home"];
[self.navBar pushNavigationItem:_myNavItem animated:NO];
我是否需要发布_myNavItem:
[_myNavItem release];
为了避免内存泄漏?
另外,我如何一般地找出是否保留一个物体?只是一个约定,任何Objective C集合都保留了添加到它的所有元素的所有权吗?
答案 0 :(得分:3)
ADC UINavigationBar Class Reference在items
属性的定义中提及它将所有UIViewControllers存储在导航堆栈中并带有NSArray
。
继续NSArray Class Reference,声明NSArray类的默认实现保留插入其中的每个对象,并在删除它时将其释放。
将这两个东西放在一起可以安全地暗示UINavigationController
在将它们推入堆栈时保留所有UIViewControllers。
答案 1 :(得分:2)
是的,UINavigationBar
保留其UINavigationItems
。就像NSArray
或NSDictionary
保留其对象一样,UINavigationBar
也是如此。