自动引用计数(__weak修饰)

- (void)testWeak

{

    id __weak weakObj = nil;

    {

        //自己生成并持有对象

        //因为strongObj变量为强引用,所以自己持有对象

        id __strong strongObj = [[NSObject  alloc] init];


        NSLog(@"strongObj: %@", strongObj);

        //obj1持有对象的弱引用。也就是obj1弱引用了strongObj对象

        weakObj = strongObj;


        //输出obj1变量持有的弱引用对象

        NSLog(@"A: %@", weakObj);

    }


    //因为strongObj变量超出其作用域,强引用strongObj失效,所有自动释放自己持有的对象。

    //因为对象无持有者,所以当代码执行到大括号外面时,废弃strongObj对象


    //废弃该对象(strongObj)的同时,

    //持有该对象(strongObj)弱引用的weakObj变量的弱引用失效,

    //nil赋值给weakObj。打印结果:

    NSLog(@"B: %@", weakObj);

}

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

推荐阅读更多精彩内容