2013-11-09 96 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

相關問題