ARC与MRC下变量赋值引用计数探究

2019-01-27  本文已影响2人  传说中的汽水枪

作者:传说中的汽水枪
地址:https://www.jianshu.com/p/2246568d3c75
版权所有,欢迎转载,转载请注明出处,欢迎留言评论。

一些相关的基础可以参考:ARC与MRC下给方法传递参数引用计数探究
此篇文章是对第一条进行相关的测试与验证:
loading a retainable pointer from an object with non-weak ownership

MRC环境

- (void)_test_variable
{
    RXARCTmpObject *object = [[RXARCTmpObject alloc] init];
    NSLog(@"count after alloc init:%zd", [object retainCount]);
    id value = object;
    NSLog(@"count after variable:%zd", [value retainCount]);
    [object release];
}

输出结果:

count after alloc init:1
count after variable:1
RXARCTmpObject dealloc

ARC环境

- (void)_test_variable
{
    RXARCTmpObject *object = [[RXARCTmpObject alloc] init];
    NSLog(@"count after alloc init:%zd", [RXMRCUtil objectRetainCount:object]);
    id value = object;
    NSLog(@"count after variable:%zd", [RXMRCUtil objectRetainCount:value]);
}

输出结果:

count after alloc init:1
count after variable:2
RXARCTmpObject dealloc

结论

很明显,在ARC环境,这种情况,ARC会自动添加retainrelease
这个结论跟文档的描述是不一致的。我想着也是以前ARC的情况吧,反正现在不是了。

上一篇 下一篇

猜你喜欢

热点阅读