UINavigationBar是否将UINavigationItem保留在其堆栈中?

时间:2010-06-21 17:12:11

标签: iphone memory-management uikit uinavigationbar

UINavigationBar是否保留推送到其堆栈的导航项?换句话说,在这之后:

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

我是否需要发布_myNavItem:

    [_myNavItem release];

为了避免内存泄漏?

另外,我如何一般地找出是否保留一个物体?只是一个约定,任何Objective C集合都保留了添加到它的所有元素的所有权吗?

2 个答案:

答案 0 :(得分:3)

ADC UINavigationBar Class Referenceitems属性的定义中提及它将所有UIViewControllers存储在导航堆栈中并带有NSArray

继续NSArray Class Reference,声明NSArray类的默认实现保留插入其中的每个对象,并在删除它时将其释放。

将这两个东西放在一起可以安全地暗示UINavigationController在将它们推入堆栈时保留所有UIViewControllers。

答案 1 :(得分:2)

是的,UINavigationBar保留其UINavigationItems。就像NSArrayNSDictionary保留其对象一样,UINavigationBar也是如此。