自动引用计数(__weak修饰)

2018-01-15  本文已影响0人  _锋

- (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
上一篇 下一篇

猜你喜欢

热点阅读