【发布时间】:2014-02-16 09:27:58
【问题描述】:
有人可以向我解释为什么在 Objective C 中 当用
声明一个字符串时NSString *string;
我可以同时使用string.length 和[string length] 来返回字符串的长度?
在.h中只有方法
-(NSUInteger *)length
那么为什么我可以使用(点)符号呢?
【问题讨论】:
标签: objective-c c
有人可以向我解释为什么在 Objective C 中 当用
声明一个字符串时NSString *string;
我可以同时使用string.length 和[string length] 来返回字符串的长度?
在.h中只有方法
-(NSUInteger *)length
那么为什么我可以使用(点)符号呢?
【问题讨论】:
标签: objective-c c
这只是语法糖,它们都是一样的。点符号与@property 一起出现,但在幕后它会为您转换为方法调用。实际上,您拥有的任何@property 定义都会生成关联的访问器方法,它们就是实际调用的方法。同样,您可以调用方法名称而不是使用点表示法。
尝试使用对您和上下文最有意义的符号。点表示法不能用于带任何参数的方法,也只能用于没有副作用的方法。
关于主题at the big nerd ranch的有趣文章。
【讨论】:
NSArray.alloc.init,尽管alloc / init 都不是属性。与setX: 相同。