3

我想转换一个实例

object_setInstanceVariable(self, [key UTF8String], *(id**)addr);

到弧。当我尝试使用 Xcode 内置的 Objective-C ARC 转换器时,我收到以下错误:

'object_setInstanceVariable' 不可用:在自动引用计数模式下不可用

我应该如何处理这个问题?我知道我可以将 --fno-objc-arc 作为编译器标志,但如果可能的话,我非常想使用 ARC(我有很多目标,否则我必须手动更改编译器标志) .

(代码最初取自Rackspace Mobile Apps 的 Mike Mayo 的NSObject+NSCoding 和 Archiver )

4

1 回答 1

5

来源: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 兼容。

于 2012-11-02T14:58:00.653 回答