0

次の質問があります。

AppDelegate があり、そこに navigationController を追加し、UIViewController B をロードします。

BI で、navigationItem、leftBarButtonItem、または rightBarButtonItem を追加します。

これらのアイテムは、B で割り当てて初期化するので、どこで解放する必要があるのでしょうか。最初は、B の Dealloc-Method で self.navigationItem.rightBarButtonItem を解放することを考えていました。

しかし、アプリを分析している場合、アナライザーは B の dealloc-method の release-position で次のように言います。

この時点で呼び出し元が所有していないオブジェクトの参照カウントの誤ったデクリメント。

しかし、私が間違ったことを理解していませんか、それともすべて問題なく、アナライザーの問題ですか?

誰かが私が見つけるのを手伝ってくれますか?

よろしく andi1984

4

1 に答える 1

1

rightBarButtonItem に割り当てて割り当てるとすぐに、次のように解放できます

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

leftBartButtonItem と同様

self.navigationItem.rightBarButtonItem はそれ自体に保持があり、そのカウントをいつ解放するかを知っている場合があります。

于 2011-08-31T20:14:57.970 に答える