1

自分用に 1 つの Cocoa アプリケーションを作成していますが、問題が見つかりました。2 つの NSTextFields があり、nextKeyViews として互いに接続されています。メモリ リーク検出ツールを使用してこのアプリを実行し、これら 2 つのテキスト ボックスをしばらくタブで移動し、テキストを入力すると、メモリ リークが発生し始めます。AppKit ライブラリが責任を負い、リークされたオブジェクトは NSCFStrings であり、責任のあるフレームは[NSEvent charactersIgnoringModifiers]and [NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]. これは非常に簡潔で不完全な説明であることは承知していますが、何が問題なのか考えられる人はいますか?

また、私は GC を使用していないのでrelease、コントローラーのインスタンス変数を使用しますdealloc。アウトレットはどうですか?IBOutletはInterface Builderのマークにすぎず、実際には何も意味しないので、私もそれらを使用する必要がありreleaseますか?

4

1 に答える 1

1

アウトレットはどうですか?IBOutlet は Interface Builder の目印にすぎず、実際には何も意味しないので、それらも解放する必要がありますか?

の宣言は、IBOutletそれを管理する方法を教えてくれます... と宣言するとretained@synthesizeペン先をロードするプロセスがretainアウトレットになります。したがって、あなたはそれをしなければなりませんrelease

Andiih はニーモニック NARCを作り出しました

NARC:「新しい割り当て保持コピー」。これらのことを何もしていない場合は、リリースする必要はありません。

当然のことですが、これらのいずれかを行う場合は、適切なタイミングでオブジェクトを解放する責任があります。

于 2010-05-20T20:13:33.620 に答える