我希望转换
的实例object_setInstanceVariable(self, [key UTF8String], *(id**)addr);
到ARC。当我尝试使用Xcode内置的Objective-C ARC转换器时,我收到以下错误:
'object_setInstanceVariable'不可用:在自动引用计数模式下不可用
我该如何处理这个问题?我知道我可以把--fno-objc-arc作为编译器标志,但我非常想使用ARC,如果可能的话(我有很多目标,否则我必须手动更改编译器标志) 。
(该代码最初由Mike Mayo在Rackspace Mobile Apps中从NSObject+NSCoding and Archiver获取)
答案 0 :(得分:4)
执行此操作的唯一方法是:
void object_setIvar(id object, Ivar ivar, id value);
您需要事先获得Ivar
值,这可以通过class_getInstanceVariable(Class class, char* name)
获得。
总的来说,这将达到与以前相同的效果,同时现在与ARC兼容。