str之所以打印出来是-1,是因为它的retainCount=NSUIntegerMax,对NSString而言,只有当你调用format,或mutable关键字的时候,才会重新分配内存,如果你是调用这个方法"initWithFormat:",这其实是mutable操作,它内部会复制string然后分配内存,此时才会retainCount = 1,你如果要测试retainCount,不要用NSString来测试,你不了解的话会有很多意外的问题发生
解决方案 »
- swipeleft事件触发多次 jquery mobile swipeleft怎么会执行两次 ,大虾们帮帮忙啊
- 1个hello world程序如何解释呀?
- UINavigationController旋转的问题
- 去年毕业开始做IOS,空闲时间自己做了一款app,请各位大神给一些意见
- 都说c语言很难学,我刚学了一点就。。
- ios AsyncSocket客户端与java socket服务端通信的问题
- Apple LLVM 6.0 Error
- tableView datasource 问题
- 需要一个可以免费展示App资料和留言功能的网站空间,大家有好推荐吗?
- 我静态库冲突,先解压该静态库成 *.o文件 把这个文件名字改了,在合并成静态库能解决成图吗
- 求助:禁用已下载app里个别功能
- CALayer 坐标转换的问题
NSString *str = [[NSString alloc]init];
等效 NSString *str = @"";
@"" 属于静态区常量 ,retainCount 为 无效的值 ,也就是 常驻内存的意思NSLog(@"%zi",(unsigned long)[arry retainCount]);//计数为2 ,这个引用计数 为二 ,你应该用的 是 ARC 吧 ,这个我就不是很 清楚了 ,如果 不用 ARC 的话 ,应该 是 1
NSArray *arry1 = [[NSArray alloc]init];
NSArray *arry2 = [[NSArray alloc]init];它们三个是同一个对象