2011-08-31 49 views
0

我有以下問題:Released a navigationItem

我有一個AppDelegate,我添加了一個navigationController並在其中加載UIViewController B.

在B我添加一個navigationItem,一個leftBarButtonItem或一個rightBarButtonItem。

我在哪裏必須釋放這些項目,因爲我alloc和初始化它們B.因此,在第一我想過的dealloc法釋放B.

的self.navigationItem.rightBarButtonItem但如果我中號分析我的應用,分析器表示在B的的dealloc-方法釋放位置:

的對象不是 此時調用者所有的​​引用計數不正確的減量。

但是我不會低估我做錯了什麼,或者一切正常,這是一個分析儀問題?

有人能幫我找出答案嗎?

迎接andi1984

+0

您是否在創建它們時自動釋放導航項目?您可以在創建這些導航項目的位置顯示代碼嗎? –

回答

1

只要你分配和分配給rightBarButtonItem您可以釋放像

UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showNewEventViewController)]; 
self.navigationItem.rightBarButtonItem = rightBarButtonItem; 
[rightBarButtonItem release]; 

類似於leftBartButtonItem

self.navigationItem.rightBarButtonItem可能本身就是一個保留,並且知道何時發佈該計數。

+0

所以我不需要手動釋放self.navigationItem.rightBarButtonItem本身? – andi1984

+0

不可以,但請確保在將其分配給self.navigationItem.rightBarButtonItem後執行[rightBarButtonItem release]。 – Saran

+0

當然!謝謝你的幫助! – andi1984