对象c运行时关联对象

时间:2014-04-22 21:59:23

标签: memory-management automatic-ref-counting objective-c-runtime associated-object

associate object tutorial "教程链接给了我一个清晰的对象-c运行时关联对象概念"

阅读下面的示例代码后,我有一个小问题。

    - (void)setAssociatedObject:(id)object
    {
       objc_setAssociatedObject(self, @selector(associatedObject), object,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    }

    - (id)associatedObject
    {
       return objc_getAssociatedObject(self, @selector(associatedObject));
    }

如果您在iOS中使用ARC,我们是否需要自行添加内存处理?

提前致谢

1 个答案:

答案 0 :(得分:3)

objc_setAssociatedObject的来电将导致该对象被保留 - 即OBJC_ASSOCIATION_RETAIN_NONATOMIC部分。这是指定的行为,当与之关联的对象被释放时,它也会自动释放。

因此,无论您是否正在使用ARC,都不需要进行任何进一步的内存处理(如果您希望此操作像copy属性一样,请注意,您和# 39;显然需要添加复制,这在ARC和非ARC下看起来会有所不同。