在 NSString 中,长度是属性还是函数?
Posted
技术标签:
【中文标题】在 NSString 中,长度是属性还是函数?【英文标题】:In NSString, is length an attribute or function? 【发布时间】:2016-04-07 01:31:22 【问题描述】:如下所述:
length
str.length vs [str length]
是长度属性还是方法? 哪一个是正确的实现?
这是标准的 ios 写法吗:
if([self.clientNumberTxtField.text length] == 0)
【问题讨论】:
【参考方案1】:length
是一个属性。因此你可以这样做:
NSInteger len = str.length;
但您应该知道,属性只是对 setter 和 getter 方法的适当组合以及通常是实例变量的美化语法。既然你得到了这个属性的“getter”方法,你也可以这样做:
NSInteger len = [str length];
两者都是完全有效的。这是个人喜好问题。
【讨论】:
【参考方案2】:在Objective-C中,property会为你创建两个默认方法。例如:
@property (nonatomic) NSUInteger length;
// then you will get two methods
- (NSUInteger)length;
- (void)setLength:(NSUInteger)length;
所以你可以这样调用:
[str length];
【讨论】:
你的答案不是最好的例子,因为length
是只读的,所以不会有setLength:
方法。
您的更新不会改变NSString length
是只读的这一事实。如果您希望从读写属性演示这两种方法,您可能需要显示一个不同的示例。只是一个想法。【参考方案3】:
正如其他评论者所指出的,长度是 NSString 上的只读属性。虽然实现对我们来说是隐藏的,但我认为我们可以安全地假设没有变量支持它,它是从其他一些数据成员(字符串中的字符)计算出来的。因此,我会通过说它更像一个函数而不是属性来回答您的问题,但这是学术性的,目标 C 为我们提供了属性,这些属性可能执行计算或可能只是返回一些底层数据成员,您不必担心,只需使用它:)。最好的
Ps myString.length 只是 [myString length] 的简写,我敢打赌你喜欢它们编译成完全相同的东西
【讨论】:
以上是关于在 NSString 中,长度是属性还是函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 NS String 是不是包含 javascript 函数?