【发布时间】:2014-01-02 10:37:35
【问题描述】:
我在使用 Objective-C 属性时遇到了一些困难。我展示一段代码只是为了解释我的疑问:
啊.h
@interface A : NSObject
@property (nonatomic,getter = isChosen) BOOL chosen;
@end
main.m
A *myClass = [[A alloc]init];
myClass.chosen = YES;
NSLog(@"1. myClass.chosen = %hhd", myClass.chosen);
myClass.chosen = NO;
NSLog(@"2. myClass.chosen = %hhd", myClass.chosen);
NSLog(@"3. myClass.chosen = %hhd", [myClass isChosen]);
NSLog(@"4. myClass.chosen = %hhd", myClass.isChosen);
输出
1. myClass.chosen = 1
2. myClass.chosen = 0
3. myClass.chosen = 0
4. myClass.chosen = 0
对我来说一切都很清楚,除了最后一行代码,我用myClass.isChosen 获取选择的属性 的值:我理解点语法myClass.chosen,因为编译器将它转换为消息符号语法[myClass isChosen],但我真的不明白为什么myClass.isChosen 有效,或者更好,我认为编译器再次将它转换为消息符号,但对我来说似乎有点奇怪。
我想知道使用点符号语法调用 getter 方法是否被认为是一种好习惯,以及它是否只对我来说很奇怪。显然只有在您更改 getter 时才会注意到这一点 property 声明中的 em> 名称,否则 NSLog 2 和 4 相同。
【问题讨论】:
标签: objective-c properties getter accessor