取代自我> isa是因为Xcode 4.6的弃用

我刚刚安装了Xcode 4.6,现在我在我pipe理的一个古老的代码中收到了新的错误。

编译器现在抱怨说:“直接访问Objective-C的isa被弃用,而不赞成object_setClass()和object_getClass()”,并且不会构build。

所以我的问题是,这是正确的等值?

self->isa = [CustomClass class]; 

换成:

 object_setClass(self, [CustomClass class]); 

谢谢

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

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

这就是说,为什么你甚至需要这个? 极less数情况下,replace一个对象的类是合适的,唯一有效的情况是我想到的是当你试图dynamic地inheritance一个类,以便将新的行为注入个别实例而不用整体修改类(这当然是你可能不需要做的事情)。