iOS基础 对Strong和Weak的理解

之前对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的时候该对象销毁

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容