2

I'm relatively new to iOS development so please excuse me if this is a retarded question. I've read this but am still a bit confused.

I'm not using ARC. (Yes yes, I know I should but I don't at this point) In my class header I have this

/*-----------------------------------------------------------------------+
 | The name of the sender/receiver
 +-----------------------------------------------------------------------*/
@property (nonatomic, retain) NSString *name;

I do NOT synthesize this variable but let the compiler do that job.

What of the following is considered to be best practise for the dealloc method

#1 Dealloc the iVar

-(void) dealloc {
   [_name release];
   [super dealloc];
}

#2 Dealloc the property

-(void) dealloc {
   [self.name release];
   [super dealloc];
}

#3 And a last question. Is is customary to set the property to nil in the dealloc method? I.e.

-(void) dealloc {
   [self.name release];
   self.name = nil;
   [super dealloc];
}

Would really appreciate if someone could explain this to me.

Regards!

4

2 に答える 2

2

Jeff Lamarcheは、deallocで変数を解放することについての素晴らしい記事を書いています:http: //iphonedevelopment.blogspot.nl/2010/09/dealloc.html

self.マルチスレッド環境で問題が発生する可能性があるため、構文は絶対に使用しないことをお勧めします。

彼の提案は、プロダクションビルドiVarでとを使用することです。nil

-(void) dealloc {
   [_name release], _name = nil;
   [super dealloc];
}
于 2013-02-27T08:41:20.883 に答える
0

アプローチ 1:

安心して使えます。dealloc メソッドで iVar を解放しても害はありません。ただし、name に値を割り当てた場合は、プロパティまたは alloc メソッド (ファクトリ メソッドではない) を使用する必要があります。

アプローチ 2:

リリース時には、プロパティを使用しないでください。

アプローチ 3:

プロパティは使用しないでください。ただし、nil を ivar に割り当てることはできます。

于 2013-02-27T08:51:18.567 に答える