只是几天我正在研究一个项目,我必须看看什么是一个字符串的保留计数.
但它总是让我回复"2147483647",为什么会如此呢?
查看此代码以自行检查.
NSString *str = [[NSString alloc] initWithString:@"Hello World"];
NSLog(@"String Retain Count: %i", [str retainCount]);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是为什么它没有返回1像其他对象返回,为什么我得到"2147483647"
提前致谢.
Dav*_*ong 26
编译器比你聪明.
它看到@"Hello world"并想到"啊哈!一个恒定的弦!"
然后它看到[[NSString alloc] initWithString:@"Hello world!"]并想到"啊哈!一个用常量字符串创建的不可变对象!"
然后,它崩溃两者分解成一个单一的NSConstantString,它具有retainCount的UINT_MAX,所以它可以永远不会被释放.