まったく基本的な質問で申し訳ありませんが、保持されている合成プロパティがある場合。
self.myProperty = [[NSObject alloc] init];
メモリリークが発生しますか?
そうする必要があると考えるのは正しいですか
self.myProperty = [[NSObject alloc] init];
[self.myProperty release];
バランスをとるために?それはばかげているように見えるからです。
まったく基本的な質問で申し訳ありませんが、保持されている合成プロパティがある場合。
self.myProperty = [[NSObject alloc] init];
メモリリークが発生しますか?
そうする必要があると考えるのは正しいですか
self.myProperty = [[NSObject alloc] init];
[self.myProperty release];
バランスをとるために?それはばかげているように見えるからです。
autorelease
そのような状況で使用するのが標準的な方法です。そう:
self.myProperty = [[[NSObject alloc] init] autorelease];
これはinit
、保持されたオブジェクトを返すためであり、プロパティもそれを保持するため、解放する必要があります。
追加するために編集: @walkytalky は、実際にalloc
はオブジェクトを保持し、init
それを返すだけであることをコメントで適切に指摘しています。
もう 1 つの (より冗長な) 手法は次のとおりです。
NSObject *o = [[NSObject alloc] init]; //retain count 1
self.myProperty = o; //retain count 2
[o release]; //retain count 1
個人的には、上記の最初の例のように autorelease を使用したいと思います。
ARC を有効にすると、xcode がすべてのメモリ管理を処理します。ARC を使用しない場合は、必ず dealloc メソッドで解放してください。