将object_setInstanceVariable()转换为ARC?
我希望转换一个实例
object_setInstanceVariable(self, [key UTF8String], *(id**)addr);
到ARC。 当我尝试使用Xcode内置的Objective-C ARC转换器时,出现以下错误:
“object_setInstanceVariable”不可用:在自动引用计数模式下不可用
我应该如何处理这个问题? 我知道我可以把–fno-objc-arc作为编译器标志,但是我非常想用ARC代替,如果可能的话(我有很多目标,否则我将不得不手动更改编译器标志) 。
(代码最初是由Rackspace Mobile Apps的Mike Mayo从NSObject + NSCoding和Archiver获得的)
来源: 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兼容。