.hで変数を宣言しました:
@property (nonatomic, retain) NSString *var;
以下を使用してプロパティ変数を呼び出す場合:
_var = sumthing;
アプリがクラッシュし、私がそれを次のように呼び出すと:
self.var = sumthing;
それはうまくいきます。
これら2つのシナリオに違いはありますか?
注:@synthesize
これを具体的に書く必要がないため、私は使用していません。
.hで変数を宣言しました:
@property (nonatomic, retain) NSString *var;
以下を使用してプロパティ変数を呼び出す場合:
_var = sumthing;
アプリがクラッシュし、私がそれを次のように呼び出すと:
self.var = sumthing;
それはうまくいきます。
これら2つのシナリオに違いはありますか?
注:@synthesize
これを具体的に書く必要がないため、私は使用していません。
を使用している場合は、を使用self.var
して保持する必要があります。これにより、setterメソッドが内部的に呼び出されて保持されます。直接割り当てる場合、setterメソッドは呼び出されず、リリースされるとクラッシュします。sumthing
@property
sumthing
基本的に、aself.var = sumthing;
は、それを割り当てsumthing
てvar
保持することと同じです(var = [sumthing retain];
)。あなたが直接それをしているとき、それは単に割り当て部分を行い、保持はしません。したがって、リリースされると、使用してアプリがクラッシュしsumthing
たときにリリースされた変数を指すことになります。var
それでも使用せずに使用したい場合は、どちらで動作self.var
するか試してみてください_var = [sumthing retain];
。
もう使用する必要がないので、これは合成とは何の関係もありません。スキップできます。
_var ..を使用してvarの@synthesizedプロパティを使用しましたか?そうでない場合は、直接varとして扱います。_varは使用しないでください。