我对在 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 = [方法:val];// 一些返回 MyOtherClass 值的方法
为了
自我.myVar = [方法:val];// 一些返回 MyOtherClass 值的方法
那么......使用 self 或不使用它有什么区别?我的意思是,很明显我必须使用它,因为如果不使用它会导致问题,但我不知道为什么
先感谢您