我最近发现没有必要将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);
...
}
答案 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)
即使它有效,我觉得最好添加一些简单的额外代码行来将它声明为属性,即使它只是使代码更具可读性。