self.variable和self->变量之间有什么区别?

时间:2012-02-24 07:53:08

标签: iphone ios ios5

我见过使用 - >访问iphone sdk中的变量要么 。符号。哪一个是最好的?self.variable和self->变量之间有什么区别?

3 个答案:

答案 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 ++中那样。或者