我在使用Objective-C属性时遇到了一些困难。.我正在显示一段代码来解释我的疑问:
啊
@interface A : NSObject @property (nonatomic,getter = isChosen) BOOL chosen; @end
主目录
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名称时才会注意到这一点,否则会显示NSLog 2和4相同。