iOS weak置nil

作者: 大白龙 | 来源:发表于2019-07-01 15:44 被阅读0次

    这部分内容参考《Objective-C高级编程:iOS与OS X多线程和内存管理》,可以看出具体的实现方式就是使用了一个HashTable。

    NSString *name = [[NSString alloc] initWithString: @"Object"];

    __weak NSString *weakStr = name;

    当为weakStr这一weak类型的对象赋值时,编译器会根据name的地址为key去查找weak哈希表,该表项的值为一个数组,将weakStr对象的地址加入到数组中,当name变量超出变量作用域或引用计数为0时,会执行dealloc函数,在执行该函数时,编译器会以name变量的地址去查找weak哈希表的值,并将数组里所有 weak对象全部赋值为nil。

    相关文章

      网友评论

        本文标题:iOS weak置nil

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