阅读objc4-706中的objc-accessors.mm文件,会发现属性设置有以下几个方法:
1、objc_setProperty
2、objc_setProperty_atomic
3、objc_setProperty_nonatomic
4、objc_setProperty_atomic_copy
5、objc_setProperty_nonatomic_copy
最终调用的都是 reallySetProperty(id self, SEL _cmd, id newValue, ptrdiff_t offset, bool atomic, bool copy, bool mutableCopy) :
spinlock_t & slotlock = PropertyLocks[slot];
slotlock.lock();
oldValue = *slot;
*slot = newValue;
slotlock.unlock();
网友评论