LLVM 5.1“不推荐使用的 isa”的编译器错误
Posted
技术标签:
【中文标题】LLVM 5.1“不推荐使用的 isa”的编译器错误【英文标题】:Compiler Error with LLVM 5.1 "Deprecated isa" 【发布时间】:2014-03-20 07:37:55 【问题描述】:libJSONKit
和 JSONKit.m
出现编译器错误。
错误由此引发:"Assignment to Objective-C's isa is deprecated in favor of object_setClass()"
.
还有一个次要错误:
"Direct access to Objective-C's isa is deprecated in favor of object_getClass()".
关于变通办法或解决方案的任何建议?
【问题讨论】:
有什么令人信服的理由不使用NSJSONSerialization
?
我对我的自定义 JSON 代码使用 NSJSONSerialization,但我正在使用调用这个特定库的 SoundCloudAPI。
【参考方案1】:
只需按照错误消息中的建议进行操作即可:
变化:
object->isa = SomeClass;
到:
object_setClass(object, SomeClass);
【讨论】:
成功了!你能解释一下第一个版本的语法是什么意思吗? isa 是什么意思?这只是为了了解更多信息。 @MichaelLorenzo 请参阅以下 SO 问题,其中包含对isa
的很好解释:***.com/questions/3405224/…
也许这在早期版本中也有效,但在 XCode 5.1.1 中,只需点击红色错误项目符号并选择“修复它”建议对我来说就像一个魅力。谢谢!【参考方案2】:
您可能必须从项目设置中删除 64 位架构。
发生这种情况是因为 Apple 添加了 arm64 作为更新到 ios 7.1 和 Xcode 5.1 的标准架构的一部分。 您可能必须手动将其设置为 armv7、armv7s ... JSONKit 还不支持 arm64。
【讨论】:
所以现在苹果需要 64 位,我必须有 arm64,但是我遇到了 isa 问题……当需要包含 arm64 时如何解决这个问题?我的一个 isa 问题在我可以编辑的文件中,另一个在我无法编辑的 lib 中,它出现了……。嗯 在这种情况下,解决方案通常包括检查导致问题的库的最新更新。这个库是提供开源项目还是来自商业产品?以上是关于LLVM 5.1“不推荐使用的 isa”的编译器错误的主要内容,如果未能解决你的问题,请参考以下文章
xcode5:构建时出现 Apple LLVM 5.1 错误
CentOS 6.5 安装YouCompleteMe 报错汇总