2010-06-21 36 views
1

UINavigationBar是否保留推送到其栈上的导航项?换句话说,以后这样做:UINavigationBar是否保留将UINavigationItems推入其堆栈?

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

做我需要释放_myNavItem:为了避免内存泄漏

[_myNavItem release]; 

另外,我如何发现一般对象是否会被保留?这仅仅是一个约定,任何Objective C集合都会维护添加到它的所有元素的所有权?

回答

3

ADC UINavigationBar Class Reference在定义items属性时提到了它正在存储所有推送到导航堆栈上的UIViewControllers,其中NSArray

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

把这两件事放在一起可以安全地暗示UINavigationController当它们被压入堆栈时,它保留了所有的UIViewController。

2

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

+1

在苹果文档中有没有说明这一点的地方,还是仅仅是一个常规?我不怀疑你的答案,只是想知道我下次可以自己找到这个,而不是问这个:) – 2010-06-21 17:49:39