typedef uintptr_t disguised_ptr_t;
inline disguised_ptr_t DISGUISE(id value) { return ~uintptr_t(value); }
我最近读了objc运行时的源代码,上面的代码让我很困惑
首先,它将value
转换为类型uintptr_t
。然后,它对结果值进行逐位求反(补码(。
函数中的代码基本上等同于
uintptr_t temporary = value;
return ~temporary;