Converting object_setInstanceVariable() to ARC?

懵懂的女人 提交于 2019-12-06 06:33:11

问题


I wish to convert an instance of

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

to ARC. When I try to use Xcode built-in Objective-C ARC converter I get the following error:

'object_setInstanceVariable' is unavailable: not available in automatic reference counting mode

How should I handle this problem? I know I can put --fno-objc-arc as Compiler flag, but I would very much like to use ARC instead, if it's possible (I have a lot of targets that I otherwise would have to manually change the Compiler flag for).

(The code is originally taken from NSObject+NSCoding and Archiver by Mike Mayo at Rackspace Mobile Apps)


回答1:


Source: https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html

The only other method to do this is:

void object_setIvar(id object, Ivar ivar, id value);

You need the Ivar value beforehand, which can be obtained via class_getInstanceVariable(Class class, char* name).

Overall this will achieve the same effect as before, whilst now being ARC compatible.



来源:https://stackoverflow.com/questions/13196727/converting-object-setinstancevariable-to-arc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!