を nil にviewDidUnload
設定する場所では、オブジェクトも nil に設定します。だったこれら。オブジェクトを nilに設定することはまったく意味がありますか?IBOutlets
NSString
(nonatomic,strong)
NSString
4 に答える
オブジェクトを に設定していないことに注意してくださいnil
。設定するのnil
は、オブジェクトの1つへのポインターであるため、それ以上何も指しません。
これは、文字列を指している他のオブジェクトに他のインスタンス変数がある場合、それらはオブジェクトの違いを認識しないことを意味します。それらは、同じ変更されていないコンテンツを持つ同じ古い文字列を引き続き指します。
ただし、質問に答えるには:nil
変数をアウトするのは理にかなっていますが、ビューコントローラーの割り当てが解除された場合、インスタンス変数も割り当てが解除されます。したがって、文字列が小さい場合はnil
、viewDidUnload
.
viewDidUnload
loadView
はまだ残っていますが、またはで再作成できるものはすべて削除するために使用する必要がありますviewDidLoad
。
文字列プロパティがビュー コントローラーのモデルの一部であり、再作成できない場合は、それらを削除しないでください。
メソッドが呼び出される保証はありません。View Controller が画面外にある場合にのみ呼び出されますが、システムはメモリ不足に陥っています。viewWillAppear
またはのようではありませんviewDidDisappear
。dealloc
ビュー コントローラのメソッドと混同しないでください。
手動でメモリを管理している場合は、アウトレット自体をnilに設定する必要はなく、それにリンクされているオブジェクトのみを設定します。
たとえば、@property (nonatomic,strong)IBOutlet UIImageView *imageView;
画像ビューをnilに設定するだけです-imageView = nil;
-viewDidUnload
IBOutletsを含め、-viewDidLoad
またはで作成されたオブジェクトをリリースするためだけのものです。-loadView
これらの文字列をに割り当てない場合、-loadView
または-viewDidLoad
で解放するのは誤り-viewDidUnload
です。