1

「viewDidUnload」でオブジェクトを削除する以下のAppleの推奨事項(Core Dataチュートリアルにあります)に関してもう少し情報を提供できる人に興味があります。例えば:

  • なぜこれが重要なのですか?nil'ingをリリースすることとは異なりますか?
  • これはベストプラクティスですか/私はこれを行っていませんし、これを見ていません。私が見たiPhoneのサンプルコードでは考えていませんか?

コード:

// The implementation of viewDidUnload should relinquish ownership 
// of anything created in viewDidLoad that can be recreated.

- (void)viewDidUnload {
  self.eventsArray = nil;
  self.locationManager = nil;
  self.addButton = nil;
}

- (void)dealloc {
  [managedObjectContext release];
  [eventsArray release];
  [locationManager release];
  [addButton release];
  [super dealloc];
}
4

2 に答える 2

5

プロパティをに設定すると、nilそれらも解放されます(setterメソッドが古い値を解放すると仮定します)。

さらに、プロパティをに設定するnilと、後で送信される可能性のあるメッセージはすべて飲み込まれnil、無視されます。それらが単に解放された状況では、オブジェクトは割り当て解除されてメモリ内で上書きされる可能性がありますが、メッセージが送信される可能性があります(現在、メモリ内で上書きされたものに送信されます)。クラッシュや例外などが発生する可能性があります。予期しない動作。

于 2011-03-30T00:48:23.413 に答える
0

メモリが少ない状況では、viewDidUnloadメソッドが呼び出されます。メモリが少ない状況では、xibsはメモリから解放され、アプリのメモリを解放します。ただし、アプリにnibオブジェクトを保持している場合は、十分に効果的ではありません。したがって、viewDidUnloadでnibオブジェクトをnilに設定すると、より多くのメモリを解放できます。

于 2011-03-30T12:21:38.770 に答える