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

编译器提示“为了支持object_setClass()和object_getClass()而弃用对Objective-c的isa”,并且该项目无法构建。

所以请告诉我,是:

object_setClass(self, [CustomClass class]);

适当替换:
self->isa = [CustomClass class];

谢谢!

最佳答案

拒绝使用isa已有一段时间了,这些工具只是没有告诉您。值得注意的是,至少在obj-c中已存在标记指针的情况下,该方法已被弃用。

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

就是说,为什么您甚至需要这个?替换对象的类非常合适,这是极为罕见的,我能想到的唯一有效的情况是,当您尝试动态地对一个类进行子类化,以便将新的行为注入(inject)到各个实例中而又不对整个类进行修改时(这当然是您可能不需要执行的操作)。

关于ios - 由于弃用而替换了self-> isa,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14590637/

10-14 20:52