如何释放通过objc_setAssociatedObject关联的对象?

rad*_*iel 9 objective-c

如果我使用一个用于objc_setAssociatedObject向对象添加伪属性的类别,我该如何确保它们被正确释放?我必须手动释放它们dealloc吗?

Joe*_*Joe 17

您分配的行为决定了为该类型管理内存的方式.如果选择保留或复制,则在添加相关引用的类的实例被释放时将释放该对象.这使得保留和复制行为操作成为Objective-C类的首选.只要在完成对象时将引用设置为nil,Assign也可用于避免保留周期.

常量

OBJC_ASSOCIATION_ASSIGN指定对关联对象的弱引用.

OBJC_ASSOCIATION_RETAIN_NONATOMIC指定对关联对象的强引用,并且不以原子方式创建关联.

OBJC_ASSOCIATION_COPY_NONATOMIC指定复制关联对象,并且不以原子方式创建关联.

OBJC_ASSOCIATION_RETAIN指定对关联对象的强引用,并且以原子方式进行关联.

OBJC_ASSOCIATION_COPY指定复制关联的对象,并以原子方式进行关联.