1

を nil にviewDidUnload設定する場所では、オブジェクトも nil に設定します。だったこれら。オブジェクトを nilに設定することはまったく意味がありますか?IBOutletsNSString(nonatomic,strong)NSString

4

4 に答える 4

3

オブジェクトを に設定していないことに注意してくださいnil。設定するのnilは、オブジェクトの1つへのポインターであるため、それ以上何も指しません。

これは、文字列を指している他のオブジェクトに他のインスタンス変数がある場合、それらはオブジェクトの違いを認識しないことを意味します。それらは、同じ変更されていないコンテンツを持つ同じ古い文字列を引き続き指します。

ただし、質問に答えるには:nil変数をアウトするのは理にかなっていますが、ビューコントローラーの割り当てが解除された場合、インスタンス変数も割り当てが解除されます。したがって、文字列が小さい場合はnilviewDidUnload.

于 2012-09-05T20:06:10.423 に答える
1

viewDidUnloadloadViewはまだ残っていますが、またはで再作成できるものはすべて削除するために使用する必要がありますviewDidLoad

文字列プロパティがビュー コントローラーのモデルの一部であり、再作成できない場合は、それらを削除しないでください。

メソッドが呼び出される保証はありません。View Controller が画面外にある場合にのみ呼び出されますが、システムはメモリ不足に陥っています。viewWillAppearまたはのようではありませんviewDidDisappeardeallocビュー コントローラのメソッドと混同しないでください。

于 2012-09-05T20:04:44.850 に答える
0

手動でメモリを管理している場合は、アウトレット自体をnilに設定する必要はなく、それにリンクされているオブジェクトのみを設定します。

たとえば、@property (nonatomic,strong)IBOutlet UIImageView *imageView;

画像ビューをnilに設定するだけです-imageView = nil;

于 2012-09-05T20:01:17.657 に答える
0

-viewDidUnloadIBOutletsを含め、-viewDidLoadまたはで作成されたオブジェクトをリリースするためだけのものです。-loadView

これらの文字列をに割り当てない場合、-loadViewまたは-viewDidLoadで解放するのは誤り-viewDidUnloadです。

于 2012-09-05T20:11:44.283 に答える