我见过使用 - >访问iphone sdk中的变量要么 。符号。哪一个是最好的?self.variable和self->变量之间有什么区别?
答案 0 :(得分:3)
点符号通过访问器,箭头符号直接进入实例变量。试试这段代码:
@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
答案 1 :(得分:0)
点符号将使用属性getter / setter方法 - 因此依赖于您声明的变量可以保留或分配的内容,或者您可以指定自己的getter / setter方法,以便在设置该属性时执行额外的工作。 / p>
自>是指向self的指针引用。它直接访问var。我个人认为在obj c中使用它没有意义,因为'var on it own'会产生同样的效果。
PS。关于这个确切的主题,还有很多关于SO的其他问题/答案。
This一个
This一个
答案 2 :(得分:0)
self.var
表示你为var声明了一个属性,假设如下:
@property (nonatomic, retain) id var;
事实上,它为self.var
调用[self var]。
虽然self->var
只是获取自我实例的成员值,就像在C ++中那样。或者