【问题标题】:difference beetween string.length and [string length] in objective C [duplicate]目标C中string.length和[string length]之间的区别[重复]
【发布时间】:2014-02-16 09:27:58
【问题描述】:

有人可以向我解释为什么在 Objective C 中 当用

声明一个字符串时
NSString *string;

我可以同时使用string.length[string length] 来返回字符串的长度?

在.h中只有方法

-(NSUInteger *)length

那么为什么我可以使用(点)符号呢?

【问题讨论】:

    标签: objective-c c


    【解决方案1】:

    这只是语法糖,它们都是一样的。点符号与@property 一起出现,但在幕后它会为您转换为方法调用。实际上,您拥有的任何@property 定义都会生成关联的访问器方法,它们就是实际调用的方法。同样,您可以调用方法名称而不是使用点表示法。

    尝试使用对您和上下文最有意义的符号。点表示法不能用于带任何参数的方法,也只能用于没有副作用的方法。

    关于主题at the big nerd ranch的有趣文章。

    【讨论】:

    • 哦!!!!诅咒!!!谢谢你的提醒!!!!! .. 为什么 NSString.h 文件中没有 @property?
    • 你需要问苹果,但我会说这是因为重构旧类为已经可以正常工作的简单方法添加属性实际上是零价值。
    • @user3315609 @property 不存在于 NSString.h 中,因为它不是属性 :) 乍一看似乎让人分心,这是真的。点语法只是非常高级的语法糖,它允许您编写NSArray.alloc.init,尽管alloc / init 都不是属性。与setX: 相同。
    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2016-09-30
    • 1970-01-01
    • 2021-02-28
    相关资源
    最近更新 更多