iOS 切换到MRC环境下打印 retainCount 始终是-1或者一长串证书
来源:互联网 发布:雅可比矩阵公式 编辑:程序博客网 时间:2024/04/28 04:25
根据苹果的官方文档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就可以了
参考文档:
NSString *string = [[NSString alloc] init];
[string retain];
NSLog(@"string = %ld", (unsigned long)[string retainCount]);
NSLog(@"string = %lu", (unsigned long)[string retainCount]);
NSString *string2 = [[NSString alloc] initWithString:@"123"];
NSLog(@"string2 = %ld", (unsigned long)[string2 retainCount]);
NSLog(@"string2 = %lu", (unsigned long)[string2 retainCount]);
NSString *string3 = [NSString string];
NSLog(@"string3 = %ld", (unsigned long)[string3 retainCount]);
NSLog(@"string3 = %lu", (unsigned long)[string3 retainCount]);
NSString *string4 = [NSString stringWithFormat:@"123%@",@"123"];
NSLog(@"string4 = %ld", (unsigned long)[string4 retainCount]);
NSLog(@"string4 = %lu", (unsigned long)[string4 retainCount]);
Test *test = [[Test alloc] init];
[test retain];
[test release];
NSLog(@"test = %lu", (unsigned long)[test retainCount]);
以上代码的打印:
2016-12-20 17:29:17.103 acm[40218:510858] string = -1
2016-12-20 17:29:17.103 acm[40218:510858] string = 18446744073709551615
2016-12-20 17:29:17.103 acm[40218:510858] string2 = -1
2016-12-20 17:29:17.103 acm[40218:510858] string2 = 18446744073709551615
2016-12-20 17:29:17.104 acm[40218:510858] string3 = -1
2016-12-20 17:29:17.104 acm[40218:510858] string3 = 18446744073709551615
2016-12-20 17:29:17.104 acm[40218:510858] string4 = -1
2016-12-20 17:29:17.104 acm[40218:510858] string4 = 18446744073709551615
2016-12-20 17:29:17.104 acm[40218:510858] test = 1
- iOS 切换到MRC环境下打印 retainCount 始终是-1或者一长串证书
- 关于iOS 中retainCount=-1和一长串数字疑解
- ARC 环境下打印对象的 retainCount 引用计数
- iOS MRC下对象 retainCount=0后 还可以使用一次
- iOS ARC和MRC切换
- NSMutableArray类addObject方法对对象retainCount的影响 --在MRC下
- OC打印指针地址和arc下的retaincount
- iOS中的ARC和MRC环境下的单例设计模式的分析
- iOS MRC到ARC的自动转换
- MRC环境下block内存泄漏问题
- iOS retain retainCount
- iOS中的retainCount
- 在MRC下怎么开发iOS应用
- iOS MRC 下 get set 方法写法
- ios-MRC下的@property的参数
- iOS MRC 下 block 循环引用问题
- 实战总结:复杂工程从MRC切换到ARC
- ARC下获得retainCount
- jarsigner命令行签名
- CSS3 了解
- 深入了解AccessibilityService
- H5与微信获取用户当前位置
- m2e (maven eclipse) 在运行一些命令时出现了无法compile(Unable to locate the Javac Compiler in:)
- iOS 切换到MRC环境下打印 retainCount 始终是-1或者一长串证书
- selenium之 搞定checkbox、radiobox
- eclipse svn 文件冲突问题
- CS231n作业笔记1.5:Softmax的误差以及梯度计算
- C#编写和调用动态链接库
- DataGridRow的创建
- HTML5 文件API
- 加载指定bundleName照片
- 通过netsh一键连接指定WIFI