iOS 7:不推荐使用“isa”
Posted
技术标签:
【中文标题】iOS 7:不推荐使用“isa”【英文标题】:iOS 7 : 'isa' is deprecated 【发布时间】:2013-11-09 11:01:43 【问题描述】:当我在 ios7 中运行我的应用程序时收到警告“'isa' 已弃用”,我不知道如何修复此警告消息。请任何人帮助。
array->isa = _JKArrayClass;
【问题讨论】:
我建议从你的项目中去掉 JSONKit。一方面,它与 64 位架构不兼容,因为使用了语言 hack。 【参考方案1】:包括<objc/runtime.h>
。
将array->isa = _JKArrayClass;
之类的所有内容替换为object_setClass(array, _JKArrayClass)
以及class = array.isa
和class = object_getClass(array)
之类的所有内容
【讨论】:
另外,请在 GitHub 上分享你的 fork? 我在一次构建中遇到了两次此错误。您的修复适用于其中一个,但另一个似乎在库中,我无法编辑或保存它。请问我该如何解决?不确定这个库是从哪里来的。【参考方案2】:我想我会为您的 Cocoapods 用户分享我的解决方案。 (如果您找到了更好的解决方案,请在 cmets 中告诉我)
我正在使用 Cocoapods,因此我不想修改我引入的库的源代码。问题是由 Cocoapods 将“直接使用 'isa'”值设置为“是(对待as error)”,从而导致所有自动构建失败。
我已通过将其添加到我的 Podfile 来解决问题:
post_install do |installer_representation|
installer_representation.project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['CLANG_WARN_DIRECT_OBJC_ISA_USAGE'] = 'YES'
end
end
end
这样直接使用“isa”将显示为警告,但不会导致自动构建失败。
但是在 arm64 iOS 设备构建(使用 Xcode 5.1.0)中,奇怪的是 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'YES' 选项不会正确应用(视为错误)。 如果需要构建,包括 arm64 只需 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'NO' 选项即可。
【讨论】:
谢谢,这行得通。在 xcode 版本 5.0.2 (5A3005) 和小牛 19.9.1 中测试 不幸的是,我的 pod 更新未能应用此补丁。没有关于错误的详细信息:LoadError - no such file to load...
我正在使用 Xcode 5.1 和 i0S 7.1。你对此有什么想法吗?谢谢
那个错误并没有告诉我太多。如果我没记错的话,这个错误是由 JSONKit 引起的。如果这个错误是由 pod 引起的,那么这个修复(我还没有测试过)应该可以工作。否则,您应该能够在代码中修复它。你解决了吗?以上是关于iOS 7:不推荐使用“isa”的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7:不推荐使用 MPMusicPlayerController 音量。现在如何更改设备音量?
Swift - 坐标不可用:从 iOS 7 开始不推荐使用 API