0

私のアプリには多くのviewControllerがあり、viewDidUnloadこれらのビューのメソッドで変数をnil次のように設定していますmyString = nil;が、これが正しい方法であるかどうか疑問に思っていますか?

私の他のviewControllersはすべてこのコード行を使用して閉じられます/閉じられますが[self dismissModalViewControllerAnimated:YES];、これが実際にメソッドを呼び出すかどうか、またはviewControllerviewDidUnloadをアンロードするより良い方法があるかどうかはわかりませんでした。

メモリ管理のルールが正確に 100% 明確になったことはありませんが、新しいARC機能によってそれがより簡単になったことはわかっています。

4

2 に答える 2

2
  1. ARCを使用していますか?
  2. ARC を使用しない場合、myString = nil何も行わず、何も解放しません (ただし、解放self.myString = nilします) 。
  3. @property(retain)ビューを(または)に保存する場合は、@property(copy)これらのプロパティをnilin に戻す必要がありviewDidUnloadます。( iOS6whereが非推奨になった後は、 isとisの場合に限り、viewDidUnload代わりに and でリリースする必要があります)didReceiveMemoryWarningisViewLoadedYESself.view.windownil
  4. subviewsを使用して閉じたり閉じたりしませんdismissModalViewControllerAnimated。あなたは却下しUIViewControllersます。また、viewController を閉じると、そのビューがビュー階層から削除されます。ビューとビューコントローラーの違いを理解しておいてください(これらは異なるオブジェクトであり、MVC パターンの異なる部分です)。
于 2012-10-16T11:43:57.637 に答える
1

単純に NSString *myString を定義して実行します

myString = nil;

次に、null ポインターを myString に設定しますが、参照された場合はメモリを解放しません。

NSString *myString の@プロパティを作成すると、次のようになります。

self.myString = nil; 

参照された場合はメモリを解放し、null ポインターを追加します。

ARCでは、オブジェクトを自動的に解放するため、オブジェクトを解放する必要はありませんが、賢明に使用してください。

非 ARCでは、割り当てまたは参照されたメモリを解放する必要があります。

于 2012-10-16T11:39:54.233 に答える