OBJC_ASSOCIATION_ASSIGN
,即objc_setAssociatedObject
的第四个参数,是原子性的还是非原子性的?这个枚举被定义为:
enum {
OBJC_ASSOCIATION_ASSIGN = 0,
OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1,
OBJC_ASSOCIATION_COPY_NONATOMIC = 3,
OBJC_ASSOCIATION_RETAIN = 01401,
OBJC_ASSOCIATION_COPY = 01403
};
@property(assign, atomic) id idAssignAtomic;
是什么意思?
@property(assign, nonatomic) id idAssignNonatomic;
是什么意思?
OBJC_ASSOCIATION_ASSIGN
既适用于@property(assign, atomic)
也适用于@property(assign, nonatomic)
吗? 我需要了解这个问题以便完成https://github.com/kissrobber/DProperty。 - kissrobberASSIGN
的值,关于原子性的担忧实际上是无关紧要的(至少从公共角度来看)。如果将atomic / nonatomic与它们在Objective-C属性上使用时的等效物进行比较,则具有与指针相同大小且在iOS / OSX支持的所有平台上都是“assign”的属性的“原子性”实际上是无关紧要的,因为字大小的存储总是会在处理器级别上原子化。这里原子性的重要区别在于保留/释放的行为,而不是值的存储。 - Richard J. Ross III