2013-11-09 98 views
7

当我在iOS7中运行我的应用时出现警告“'isa'已弃用”,我不知道如何解决此警告消息。请有任何帮助。iOS 7:'isa'已弃用

array->isa  = _JKArrayClass; 
+1

我建议从您的项目中删除JSONKit。就其中之一而言,由于使用了语言黑客,它与64位体系结构不兼容。 – macbirdie

回答

17

包括<objc/runtime.h>

object_setClass(array, _JKArrayClass)

而且一切都像class = array.isa更换一切都像array->isa = _JKArrayClass;class = object_getClass(array)

+0

而且,请在GitHub上分享您的分支? – Ali

+0

我在一次构建中有两次这个错误。您的修补程序适用于其中一个,但另一个似乎在库中,我无法编辑或保存该修复程序。我该如何解决这个问题?不知道lib从哪里来。 – CthulhuJon

15

我想你的CocoaPods用户在那里我会分享我的解决方案。 (如果你已经找到更好的解决方法,请在评论中告诉我)

我正在使用Cocoapods,因此我不想修改我正在使用的库的源代码。问题是由于Cocoapods将“直接使用'isa'”值设置为“是(视为错误)”,从而导致所有自动构建失败。

我已经加入这个我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 Device build(与Xcode 5.1.0)奇怪CLANG_WARN_DIRECT_OBJC_ISA_USAGE ='YES'选项将不会正确应用(视为错误)。 如果您需要构建,包括arm64,只需使用CLANG_WARN_DIRECT_OBJC_ISA_USAGE ='NO'选项即可。

+1

谢谢,这个工程。在xcode Version 5.0.2(5A3005)和Mavericks 19.9.1 – keithics

+0

中进行了测试。不幸的是,我的pod更新无法应用此修补程序。没有关于错误的详细信息:'LoadError - 没有这样的文件加载...'我正在使用Xcode 5.1和i0S 7.1。你有什么想法吗?谢谢 – Lisarien

+0

这个错误没有告诉我很多。如果我没有记错,错误是由JSONKit造成的。如果这个错误是由一个pod引起的,那么这个修复(我没有测试过)应该可以工作。否则,你应该能够在你的代码中修复它。你能解决它吗? – bsarrazin

相关问题