将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兼容。