NSStringプロパティのデフォルト値を設定する推奨方法を決定しようとしています。NSStringプロパティのデフォルト値を設定する
アクセサーメソッドをクラスのinitメソッドとdeallocメソッドで使用することは安全ではないことを理解しています。私はしばしばデフォルト値を割り当てたい文字列定数を持っています。これを行うための推奨方法は何ですか(iVarはdeallocメソッドでリリースされる予定です)?例えば
私は以下のが危険であることを理解:
@property (nonatomic, copy) NSString *identifier;
....
- (id) init
{
self = [super initWithLayer:displayLayer];
if (self != nil)
{
self.identifier = @"fireSpell01";
}
return self;
}
は、それは大丈夫ですか、これを実行することをお勧めします:
identifier = [@"fireSpell01" retain];
または私はこの作業を行う必要があります。
identifier = [[NSString stringWithString:@"fireSpell01"] retain];
あなたが提案したように(割り当て解除中に)識別子が直接割り当てられたときに、そのリリースが呼び出されたらいいですか? –
@Jayはい。文字列定数に対して 'retain'と' release'を呼び出すことは安全です。 NSString *を受け取るメソッドは、それがどのように割り当てられたのか分からず、同じ方法でそれを扱うことができなければなりません。 – walkytalky