我正在通过以下方法创建一个NSString类型的对象
NSString *str = [[NSString alloc] initWithString:@"aaaaaaaaaaaaaaa"];
NSLog(@"retain count == %d",[str retainCount]);
Run Code Online (Sandbox Code Playgroud)
之后我只打印保留计数值
2010-10-29 17:04:03.939示例[1580:207]保留计数== 2147483647
可以任何人回答这个为什么这里的日志打印这样的垃圾值
谢谢,
Vla*_*mir 14
您正在从字符串文字创建不可变的NSString对象.字符串文字是在编译时创建的,并在程序的整个运行时间内生效 - 因此无法取消分配,保留/释放对它没有影响.为了优化(因为你的NSString无论如何都是不可变的),-initWithString:方法只能返回传递给它的字符串,以便字符串文字地址被分配给你的str变量.
如果您将初始化代码更改为,-initWithFormat:那么我认为您将获得预期的保留计数值
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |