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

标签 ios objective-c swift swift2

我是 iOS 开发新手。我正在学习将属性与类相关联。在那里,我遇到了将在 objc_setAssociatedObject 函数中使用的 objc_AssociationPolicy。它有一个参数 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:这只保留值的副本,即没有对值的强引用

其他呢?每个案例是什么意思?这些是如何工作的?谁能举例说明一下?

最佳答案

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

关于ios - 什么是 objc_AssociationPolicy?它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37701856/

相关文章:

ios - 由于语言错误,iTunes Connect 无法提交

objective-c - ios_type ^=0x1,这是什么意思?

objective-c - 如何使 Swift 类在 XPC 服务中可用?

ios - 推送下一个 View Pagemenu ios xcode

ios - 如何从刷新 token 获取访问 token ?

ios - Adobe Animate/Flash ios 应用程序 uploader

objective-c - 如何隐藏 iOS 模拟器?

objective-c - 更改文件大小而不损失质量 iOS

ios - 如何在不删除数据的情况下更改包ID

swift - Swift 中的“advancedBy”不可用