2010-06-21 37 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