0

インスタンス変数を適切にリリースする方法に疑問があります。deallocメソッドでリリースを実行できることはわかっています。viewdidunloadのように指定さself.instancevariouble=nilれている場合は、オブジェクトも解放されます。私の質問は、unloadメソッドでオブジェクトをnilとして指定し、deallocメソッドでもそれを解放した場合に問題が発生するかどうかです。また、xibにIBoutletとして追加されたテーブルビューをリリースするにはどうすればよいですか?誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

2

nilオブジェクトを呼び出すことreleaseに問題はありませんが、より良い戦略として、ARCに移行すると、これらの懸念のほとんどは解消されます。(iOS 6はビューをアンロードしないことにも注意してください。)

于 2012-11-08T13:44:53.527 に答える
0

self.instanceVariable = nilメソッドで使用する場合viewDidUnload(ちなみに、iOS 6では呼び出されなくなります)、値はもちろんnilです。したがって、それをdeallocメソッドで解放すると、基本的に呼び出し[nil release];ても何も起こりません。

于 2012-11-08T13:45:20.293 に答える
0

nilオブジェクトを解放しようとすると、「機能」します。アプリがクラッシュすることなくnilオブジェクトにメッセージを送信できます;)これを行うことができます:

UILabel *lbl = nil;
[lbl release];

何もしません。

そして、「xibにIBoutletとして追加されたテーブルビューをリリースするにはどうすればよいですか。誰かが私を正しい方向に向けることができますか?」xibファイルのUITableViewをコードに「接続」し、次のことを行う必要があります。

[myTableView release];
于 2012-11-08T13:44:38.183 に答える