关于iOS 中retainCount=-1和一长串数字疑解
2015-11-18 10:24
274 查看
根据苹果的官方文档https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html
上面写着应该返回的是这个对象的UINT_MAX, 并且不会释放, 这个UINT_MAX
最大二进制为(11111111111111111111111111111111)也是十六进制(0xffffffff)
如果你当成有符号数取补码后输出就得-1;
如果你当成无符号数就是最大数即:4294967295
2.在X64的机器上输出是9223372036854775807,int的最大值 在I386的机器上输出是2.因为NSNumber的numberWithInteger产生的对象是属于autorelease pool
在帮助文档中
可以看到这么一句话:
The retainCount method does not account for any pending autorelease messages send to the receiver.
就是说retainCount 对于autorelease消息产生的的对象,并不可靠。
3.Do not use this method. (required) You should never use-retainCount, because it never tells you anything useful. 永远不要用这个方法,只要遵守alloc,neworcopy以及任何需要分配内存的时候调用release就可以了
参考文档:
http://www.friday.com/bbum/2011/12/18/retaincount-is-useless/
上面写着应该返回的是这个对象的UINT_MAX, 并且不会释放, 这个UINT_MAX
最大二进制为(11111111111111111111111111111111)也是十六进制(0xffffffff)
如果你当成有符号数取补码后输出就得-1;
如果你当成无符号数就是最大数即:4294967295
2.在X64的机器上输出是9223372036854775807,int的最大值 在I386的机器上输出是2.因为NSNumber的numberWithInteger产生的对象是属于autorelease pool
在帮助文档中
可以看到这么一句话:
The retainCount method does not account for any pending autorelease messages send to the receiver.
就是说retainCount 对于autorelease消息产生的的对象,并不可靠。
3.Do not use this method. (required) You should never use-retainCount, because it never tells you anything useful. 永远不要用这个方法,只要遵守alloc,neworcopy以及任何需要分配内存的时候调用release就可以了
参考文档:
http://www.friday.com/bbum/2011/12/18/retaincount-is-useless/
相关文章推荐
- 关于iOS编程的好帮手
- iOS 断言的运用
- ios瀑布流
- ios开发--判断是否为空
- ios开发--MD5加密
- iOS AutoLayout与AutoSizing
- iOS开发宝典:String用法大全
- iOS之 动态热修补技术JSPatch
- iOS 求两经纬度中心点,并返回缩放级别,可以参考
- IOS开发核心语言0bjective C
- ARC中强指针与弱指针
- iOS开发60分钟入门
- iOS性能优化
- iOS视图控制器的整体概述
- iOS高级教程:处理1000张图片的内存优化
- IOS 内存优化和调试技巧
- iOS应用性能调优的25个建议和技巧
- iOS开发入门文档
- 编译ffmpeg-ios
- IOS开发学习建议