私はまだCocoa/Objective-Cの新機能ですから、私は私の質問を説明できることを願っています。
Xcode 4.2でGarbage Collectedアプリケーションを作成しました。このオブジェクトが作成し、Passwordオブジェクト(my class/xib)を作成するAuthorizeオブジェクト(自分のクラス)を作成するアプリケーションデリゲートを持っています。ココアのガベージコレクションと保持サイクル
パスワードウィンドウは入力を受け付け、承認または拒否して閉じます。そこからAuthorizeオブジェクトが閉じられ、コントロールがアプリケーションデリゲートに戻ります。パスワードnibがモーダルウィンドウとして提示されるとき。
テストとして、各オブジェクトが初期化されるときと終了するときにNSLogステートメントが含まれています。何らかの理由で、私のパスワードオブジェクトがファイナライズされていません。権限オブジェクトが完成しました。
私はAuthorizeオブジェクトを削除し、アプリケーションデリゲートから直接パスワードを作成しました - まだファイナライズしません。
私はこのオブジェクトをファイナライズするために私が考えることができるすべてのものを試しました。(ファイナライズされていない場合、このオブジェクトのメモリを解放していないと仮定しています)
誰かが私が見落としているかもしれない何かを提案することはできますか?
更新:
もっと実験した結果、問題が見つかりました。私は、AppDelegateとWindowController/Nibファイルだけで新しいプロジェクトを作成しました。 GCとビルドで同じ設定を使用して、問題が見つかるまですべてを削除することができました。
パスワード欄にNSSecureTextフィールドがあります。何らかの理由で、これはウィンドウが閉じられたときに解放されませんでした。
ウィンドウを閉じる前に[textField removeFromSuperview]行を追加して、finalizeメソッドが呼び出されました。
これが最善の方法かどうかはわかりませんが、うまくいくようです。
ARCオプションについては、プロジェクトがARCを使用するために10.7以上のターゲットを設定する必要があるという印象を受けました。私は最低10.5を目標にしたいと思っていました。
多分私はそれについて間違っています。私がいるなら、私に知らせてください。
ARCには10.7が必要です。 –