3

のインスタンスを変換したい

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

ARCへ。Xcode組み込みのObjective-CARCコンバーターを使用しようとすると、次のエラーが発生します。

'object_setInstanceVariable'は使用できません:自動参照カウントモードでは使用できません

この問題をどのように処理する必要がありますか?--fno-objc-arcをコンパイラフラグとして配置できることはわかっていますが、可能であれば、代わりにARCを使用したいと思います(そうでない場合は、コンパイラフラグを手動で変更する必要があるターゲットがたくさんあります) 。

(コードは元々 、RackspaceMobileAppsのMikeMayoによって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 に答える