美文网首页
自动引用计数(__weak修饰)

自动引用计数(__weak修饰)

作者: _锋 | 来源:发表于2018-01-15 11:37 被阅读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

相关文章

  • weak 原理

    weak作用 weak我们常用来解决循环引用,因为weak修饰的对象引用计数不会增加,当对象释放的时候回自动置为n...

  • 自动引用计数(__weak修饰)

    - (void)testWeak { id __weak weakObj = nil; { //自...

  • copy/strong/weak/assign的区别

    strong和weak 1.strong用来修饰对象,表示强引用,修饰的对象引用计数+12.weak同样用来修饰对...

  • Weak详解

    weak是弱引用,用weak描述修饰或者所引用对象的计数器不会加一,并且会在引用的对象被释放的时候自动被设置为ni...

  • weak

    weak是弱引用,用weak描述修饰或者所引用对象的计数器不会加一,并且会在引用的对象被释放的时候自动被设置为ni...

  • iOS weak 原理

    一、weak 基本用法weak 是弱引用,用 weak 来修饰、描述所引用对象的计数器并不会增加,而且 weak ...

  • iOS 内存管理(六)-weak原理

    一、基本用法 weak 是弱引用,用 weak 来修饰、描述所引用对象的计数器并不会增加,而且 weak 会在引用...

  • weak底层实现原理

    一、weak基本用法 weak是弱引用,用weak来修饰、描述所引用对象的计数器并不会加1,而且weak会在引用对...

  • iOS weak修饰属性的原理

    一、weak基本用法 weak是弱引用,用weak来修饰、描述所引用对象的计数器并不会加1,而且weak会在引用对...

  • iOS 内存管理 (4):Weak

    一、weak基本用法 weak是弱引用,用weak来修饰、描述所引用对象的计数器并不会加1,而且weak会在引用对...

网友评论

      本文标题:自动引用计数(__weak修饰)

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