Objective-Cのプロパティに値を割り当てることに疑問があります。たとえば、次のインターフェイスを使用している場合、「不思議なことに見逃された」値の問題がたくさん発生しました。
// MyClass.h
@interface MyClass : NSObject {
MyOtherClass *myVar;
}
@property (nonatomic, retain) MyOtherClass *myVar;
- (id)initWithValue:(NSString *)val;
そしてこの実装:
// MyClass.m
@implementation MyClass
@synthesize myVar;
- (id)initWithValue:(NSString *)val {
self = [super init];
if (self != nil) {
/** Do some stuff with val... **/
myVar = [method:val]; // Some method that returns a MyOtherClass value
}
return self;
}
実行のある時点で、myVarの値が消えたり、変更されたりします...そして解決策は次のように変更することです。
myVar = [method:val]; //MyOtherClass値を返すメソッド
にとって
self .myVar = [method:val]; //MyOtherClass値を返すメソッド
それで...自己を使用するか使用しないかの違いは何ですか?つまり、使用しなければならないのは明らかです。そうしないと問題が発生するからですが、理由はわかりません。
前もって感謝します