iphone - NSString 内部结构 - 长度如何工作?

标签 iphone objective-c cocoa-touch performance cocoa

我有一个关于 NSString 内部结构的问题。 我想检查字符串长度,基本上我想知道 NSString 是否知道它的长度/每次计数/计数并缓存结果。

我应该存储它的长度并每次计算或调用长度方法吗?

要测试一个字符串,我可以测试 nil 或询问它的长度。

if (str != nil) {
  // compute
}

if ([str length]) {
  // compute
}

哪一个最快? 哪一个内存效率更高?

谢谢

最佳答案

检查 nil(“无对象”)绝对与向 (NSString) 对象发送 length 消息不同。 。只有其中一项条件检查对于测试“空”字符串有效。 (“空”字符串是一个对象,因此不是 nil。)

更大的问题是:NSString 是否存储长度或者它是哨兵终止的(就像“普通的 c 字符串”)? NSString 将长度存储为内部属性,因此 length 的运算时间复杂度为 O(1)。

祝你编码愉快。

关于iphone - NSString 内部结构 - 长度如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6630275/

相关文章:

ios - 如何自动布局并将应用程序部署到应用程序商店

ios - 为什么这个图像不断出现? objective-C

iphone - 检测程序化 UIScrollView 滚动的结束

objective-c - 用于在 Objective C 中处理重复规则的库?

iphone - 如何创建类似iPod播放器的 View ?

google-app-engine - 在 Google AppEngine 上实现 REST 服务 (JSON)

android - OpenUDID 的工作原理

ios - 在 UIActivityViewController 中与不同类型共享数据

ios - 为什么我不能更改 iPhone 应用程序的发布日期?

cocoa-touch - UITableViewCell setSelected 方法没有被调用