在Obj-C中使用点表示法访问getter

时间:2012-03-20 10:55:55

标签: iphone objective-c ios ipad

我最近发现没有必要将getter声明为使用点表示法的属性。我不知道其他编译器版本,但Apple LLVM 3.1也是如此。有人预见到它的任何问题吗?所以,基本上:

 ---------Star.h----------  
 -(UInt32)age;

 ---------Star.m----------
 -(UInt32)age
 {
    //get star age
    return starAge;   
 }


 ---------RootViewController.m----------
 {
 ...
 //use this instead of [star age] even if there is no synthesized property "age" 
 NSLog(@"%i", star.age);

 ...

 }

4 个答案:

答案 0 :(得分:0)

你的代码很好。点表示法只是调用实例方法的另一种方法。

self.foo = bar;[self setFoo:bar];相同 bar = self.foo;bar = [self foo];

相同

答案 1 :(得分:0)

您的代码完全可以接受。如果你写了:

,编译器会做类似的事情
 ---------Star.h----------  
@property (readonly) UInt32 age;


 ---------Star.m----------
@synthesize age = starAge;

答案 2 :(得分:0)

ARC做了什么?

如果您尝试编译会发生什么:

- (void)setX:(NSInteger)x {
    NSLog(@"New x is %i", x);
}

...

[self setX:100];

没有声明X作为属性?

答案 3 :(得分:0)

即使它有效,我觉得最好添加一些简单的额外代码行来将它声明为属性,即使它只是使代码更具可读性。