美文网首页
iOS基础 对Strong和Weak的理解

iOS基础 对Strong和Weak的理解

作者: NiCeForMe | 来源:发表于2019-05-26 22:04 被阅读0次

之前对Strong和Weak的理解并不够深,只知道Strong是强引用,对象的引用计数加一,weak是弱引用,防止循环引用。但是对weak、strong修饰的对象何时销毁没有准确的理解,今天写了个demo加深一下理解。
Strong
Strong为强引用,强引用一个对象的时候,也就是会持有该对象,该对象的引用计数加1,如果不是通过属性来初始化一个对象的时候系统会默认帮我们添加__strong

- (void)strongAndWeakTestOne
{
    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(50, 200, 100, 100)];
    NSLog(@"return count is %ld",(long)CFGetRetainCount((__bridge CFTypeRef)view));
    view.backgroundColor = [UIColor redColor];
    [self.view addSubview:view];
    NSLog(@"return count is %ld",(long)CFGetRetainCount((__bridge CFTypeRef)view));
}

上面代码中我创建了一个view对象,第一次输出的结果为1,因为默认strong修饰,所以view得引用计数为1,第二次输出结果为2,因为将该view添加到父view中,父view持有了该view,所以引用计数加1。
那么Strong修饰的对象什么时候被销毁呢?
引用计数为0的时候该对象销毁

相关文章

网友评论

      本文标题:iOS基础 对Strong和Weak的理解

      本文链接:https://www.haomeiwen.com/subject/htxqtctx.html