ARC下强引用弱引用retainCount增减规律
来源:互联网 发布:txt阅读软件下载 编辑:程序博客网 时间:2024/06/06 15:02
本文只是记录ARC下不同引用时rc变化规律,不涉及基本原理。
NSString *bstr = [NSString stringWithFormat:@"bbb"]; NSLog(@"bstr-->%ld", CFGetRetainCount((__bridge CFTypeRef)bstr)); NSString *str = bstr; NSLog(@"str-->%ld", CFGetRetainCount((__bridge CFTypeRef)str)); NSLog(@"bstr-->%ld", CFGetRetainCount((__bridge CFTypeRef)bstr)); printf("\n"); __weak NSString *sstr = bstr; NSLog(@"sstr-->%ld", CFGetRetainCount((__bridge CFTypeRef)sstr)); NSLog(@"bstr-->%ld", CFGetRetainCount((__bridge CFTypeRef)bstr)); NSLog(@"str-->%ld", CFGetRetainCount((__bridge CFTypeRef)str));
bstr-->2 str-->3 bstr-->3 sstr-->4 bstr-->3 str-->3
第二组,将bstr声明为__weak类型:
__weak NSString *bstr = [NSString stringWithFormat:@"bbb"]; NSLog(@"bstr-->%ld", CFGetRetainCount((__bridge CFTypeRef)bstr)); NSString *str = bstr; NSLog(@"str-->%ld", CFGetRetainCount((__bridge CFTypeRef)str)); NSLog(@"bstr-->%ld", CFGetRetainCount((__bridge CFTypeRef)bstr)); printf("\n"); __weak NSString *sstr = bstr; NSLog(@"sstr-->%ld", CFGetRetainCount((__bridge CFTypeRef)sstr)); NSLog(@"bstr-->%ld", CFGetRetainCount((__bridge CFTypeRef)bstr)); NSLog(@"str-->%ld", CFGetRetainCount((__bridge CFTypeRef)str));
bstr-->2 str-->2 bstr-->3 sstr-->3 bstr-->3 str-->2
对比以上结果,可以得出规律,__strong = __strong则都+1,__weak = __strong则weak+1而strong不变,__strong = __weak仍然weak+1而strong不变,__weak = __weak则都不变(等号表示赋值)。
另外,当@"bbb"以类方法产出时,bstr无论是强还是弱,其rc都是2,因此由以上规律可推测(第3、4条)类方法传出的应该是个weak指针,所以也才因此无关使用者而可以自己负责生命周期吧。
0 0
- ARC下强引用弱引用retainCount增减规律
- ARC 环境下打印对象的 retainCount 引用计数
- OC里ARC中的强引用和弱引用
- 强引用,弱引用
- 强引用 弱引用
- 强引用,弱引用
- ARC下获得retainCount
- 引用计数(retainCount)
- 强引用与弱引用
- c++弱引用 强引用
- AS3弱引用强引用
- 强引用与弱引用
- 强引用和弱引用
- 强引用和弱引用
- 强引用和弱引用
- java 强引用,弱引用,虚引用
- java 强引用,弱引用,虚引用
- 强引用 弱引用 软引用
- 文件夹下shift+右键显示“在当前路径打开命令窗口”
- 采用CSS实现Html斜线表头
- COCI CONTEST #3 29.11.2014 STOGOVI
- ios开发出现 -[__NSDictionaryM isEqualToString:]: unrecognized selector sent to instance 错误
- 1236 -- 别撞坏了
- ARC下强引用弱引用retainCount增减规律
- 我的开山之语!
- linux xml解析
- HTML5 postMessage 和 onmessage API 详细应用
- 第二周项目1-c/c++语言中函数参数传递的三种方式
- 关于Jetty锁定静态文件的问题解决办法
- 1237 -- 地盘划分
- response.setContentType()中MIME参数类型总结
- 字符串处理函数——提取字符串中的字符(重要)