1

iOS5 より前は、ほとんどの人が dealloc で行っていました。iOS5 までに、その機能は viewDidUnload に移行されました。viewDidUnload が廃止され、呼び出されなくなったため、オブザーバーの登録を解除する新しい場所を見つける必要があるようです。

質問は、どこですか?

4

1 に答える 1

4

Apple ドキュメントから、ビューはもうアンロードされません。

iOS 6 より前では、メモリ不足の警告が発生したときに、後で再読み込みまたは再作成できることがわかっている場合、UIViewController クラスはそのビューをパージしていました。これが発生した場合は、viewWillUnload メソッドと viewDidUnload メソッドも呼び出して、ビュー階層に関連付けられているすべてのオブジェクトの所有権を放棄する機会をコードに与えます。これには、nib ファイルからロードされたオブジェクト、viewDidLoad メソッドで作成されたオブジェクト、および作成されたオブジェクトが含まれます。実行時に遅延してビュー階層に追加されます。iOS 6 では、ビューがパージされることはなく、これらのメソッドが呼び出されることもありません。メモリが少ないときにView Controllerが特定のタスクを実行する必要がある場合は、didReceiveMemoryWarningメソッドをオーバーライドする必要があります。

-(void)deallocしたがって、登録解除コマンドをまたはに入れます-(void)didReceiveMemoryWarning。Arc -(void)deallocget が呼び出されても、 を呼び出すことはできません[super dealloc]

于 2012-10-05T16:29:15.857 に答える