我刚刚安装了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/