什么是objc_AssociationPolicy?它是如何工作的?

时间:2016-06-08 11:57:51

标签: ios objective-c swift swift2

我是iOS开发的新手。我正在学习如何将属性与课程相关联。在那里,我遇到了objc_AssociationPolicy,它将在objc_setAssociatedObject函数中使用。它有一个参数objc_AssociationPolicy。

enum objc_AssociationPolicy : UInt {
    case OBJC_ASSOCIATION_ASSIGN
    case OBJC_ASSOCIATION_RETAIN_NONATOMIC
    case OBJC_ASSOCIATION_COPY_NONATOMIC
    case OBJC_ASSOCIATION_RETAIN
    case OBJC_ASSOCIATION_COPY
}

我错了还是对的? OBJC_ASSOCIATION_RETAIN:这将保留值的强引用,并且值不会销毁,直到与其关联的对象被销毁或删除。

OBJC_ASSOCIATION_COPY:这只保留一个值的副本,即没有对值的强引用

其他呢?每个案例意味着什么?这些如何运作?任何人都可以用例子解释我吗?

2 个答案:

答案 0 :(得分:2)

这是运行时库<objc/runtime.h>的运行时功能
如果您想在运行时为任何类添加自己的属性,可以使用objc_AssociationPolicy它是此属性的属性与属性声明中的assign,copy,retain(内存管理)相同,以获取更多信息,请查看NSHipster article

答案 1 :(得分:0)

这些属性类似于@property声明中使用的属性属性。 但是如果您不能声明存储的属性(如类别)并选择objc_setAssociatedObject(运行时函数),那么您可以使用它们。