self.variable和self-> variable之间有什么区别?
我已经看到使用 – >或在iphone sdk中访问变量。 符号。哪一个是最好的?self.variable和self-> variable之间的区别是什么?
点符号通过访问器,箭头符号直接进入实例变量。 试试这段代码:
@interface Foo : NSObject @property(assign, nonatomic) NSInteger bar; @end @implementation Foo @synthesize bar; - (void) setBar: (NSInteger) newBar { NSLog(@"Setting new bar."); bar = newBar; } - (id) init { self = [super init]; self->bar = 5; // doesn't log anything self.bar = 6; // logs return self; } @end
点表示法将使用属性getter / setter方法 – 因此取决于您声明的变量可以保留或分配的内容,或者您可以指定自己的getter / setter方法,以便在设置该属性时执行额外的工作。
self->是指向self的指针。 哪个直接访问var。 我个人认为在obj c中使用它没有意义,因为’var on it own’会产生同样的效果。
PS。 SO上有关于这个确切主题的大量其他问题/答案。
这个
这个
self.var
表示你为var声明一个属性,假设如下:
@property (nonatomic, retain) id var;
它实际上称为self.var
[self var]。
虽然self->var
只是像在C ++中那样获取self实例的成员值。