美文网首页
iOS 分类(Category)里添加weak对象属性

iOS 分类(Category)里添加weak对象属性

作者: 七维树 | 来源:发表于2021-11-26 10:45 被阅读0次

核心思想

  • 分类里添加Weak 属性用block实现,也可以用一个对象实现,associate这个block/对象,这个block/object 弱引用需要关联的对象,间接实现weak目标对象。

  • 关联属性 === 中间对象/Block --- 目标对象 (===为强引用,--- 为弱引用)

实现原理

  • 在分类dealloc的时候,会释放关联的retain的block/对象,这个block/对象会正常被释放不会造成循环饮用。
  • 内部weak持有的属性,在引用对象被释放的时候,这个weak指针会被置为nil,虽然包装层的block/对象还在,但是不影响使用,也不影响循环引用。

Block实现的代码

typedef id weakid;
typedef weakid(^WeakReference)(void);

WeakReference packWeakReference(id ref) {
    __weak weakid weakRef = ref;
    return ^{
        return weakRef;
    };
}

weakid unpackWeakReference(WeakReference closure) {
    return closure ? closure() : nil;
}

相关文章

  • iOS 分类(Category)里添加weak对象属性

    核心思想 分类里添加Weak 属性用block实现,也可以用一个对象实现,associate这个block/对象,...

  • runtime的实际应用

    1、使用关联对象动态给分类添加属性 使用关联对象,可以为类添加Category中的属性,我们可以为现有类添加一些实...

  • OC中分类的实现原理

    OC中为类添加一个分类(Category)可以实现为类添加对象方法、类方法、添加属性(添加的属性不生成成员变量)、...

  • 类 *分类* 类扩展

    分类:Category iOS中的分类主要的作用就是为类提供扩展,增加一些方法。但是只能添加方法 不能添加属性?我...

  • 【iOS 底层原理】block

    1.使用 runtime 为 Category 动态关联对象 在分类中可以用 @property 添加属性,但是不...

  • iOS - 关联对象

    一、简介 关联对象的使用一般用于给 Category 添加成员变量。我们知道,分类添加属性只能生成 setter/...

  • iOS开发 Category

    1.说下category原理,以及category为什么只能添加方法不能添加属性? 分类的实现是将category...

  • iOS Category分类

    1.说下category原理,以及category为什么只能添加方法不能添加属性? 分类的实现是将category...

  • iOS 给分类category添加属性

    一、问题:给分类(category)添加属性 最近遇到一个问题:需要在一个类的Category中添加属性; 可以通...

  • iOS - runtime category分类添加属性

    .h .m

网友评论

      本文标题:iOS 分类(Category)里添加weak对象属性

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