6

我刚刚安装了 Xcode 4.6,现在在我管理的旧代码中出现了新错误。

编译器抱怨“直接访问objective-c 的ISA 被弃用,取而代之的是object_setClass() 和object_getClass()”,并且项目不会构建。

所以请告诉我,是:

object_setClass(self, [CustomClass class]);

适当替换:

self->isa = [CustomClass class];

谢谢!

4

1 回答 1

13

访问isa已经被弃用了一段时间,工具只是没有告诉你这一点。值得注意的是,至少只要标记指针存在于 obj-c 中,它就已被弃用。

是的,object_setClass()是适当的替代品。

也就是说,你为什么还需要这个?替换一个对象的类是非常罕见的,我能想到的唯一有效的情况是当你试图动态子类化一个类以便在不修改整个类的情况下将新行为注入到单个实例中时(当然,这是您可能不需要做的事情)。

于 2013-01-29T19:28:05.700 回答