4

我知道JavaC#在处理字符串文字时都使用字符串池来节省内存。

Objective-C 是否使用任何这样的机制?如果不是,为什么不呢?

4

1 回答 1

5

是的,像这样的字符串文字@"Hello world"永远不会被释放,它们指向同一个内存,这意味着指针比较是正确的。

NSString *str1 = @"Hello world";
NSString *str2 = @"Hello world";
if (str1 == str2) // Is true.

这也意味着弱字符串指针不会更改为 nil(对于普通对象会发生这种情况),因为字符串文字永远不会被释放。

__weak NSString *str = @"Hello world";
if (str == nil) // This is false, the str still points to the string literal
于 2012-07-19T08:23:53.207 回答