我希望转换一个实例
object_setInstanceVariable(self, [key UTF8String], *(id**)addr);
到 ARC。当我尝试使用 Xcode 内置 Objective-C ARC 转换器时,出现以下错误:
“object_setInstanceVariable”不可用:在自动引用计数模式下不可用
我应该如何处理这个问题?我知道我可以将 --fno-objc-arc 作为编译器标志,但如果可能的话,我非常想使用 ARC (我有很多目标,否则我必须手动更改编译器标志) 。
(代码最初取自NSObject+NSCoding 和 Archiver https://github.com/greenisus/NSObject-NSCoding作者:Rackspace 移动应用程序的 Mike Mayo)
Source: https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html
执行此操作的唯一其他方法是:
void object_setIvar(id object, Ivar ivar, id value);
你需要Ivar
预先值,可以通过以下方式获得class_getInstanceVariable(Class class, char* name)
.
总体而言,这将实现与以前相同的效果,同时现在兼容 ARC。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)