2014-06-12 67 views
0
dyld: Symbol not found: _OBJC_CLASS_$_UITraitCollection 

在我參考UITraitCollection代碼中的唯一的地方是:

func loadImages(imageName: NSString) { 
    var image: UIImage 
    images = NSMutableArray(capacity: 7) 
    for i in 0..7 { 
     image = UIImage(named:"\(imageName)\(i).png", inBundle:nil, compatibleWithTraitCollection:nil) 

     if (image != nil) { 
      images.addObject(image) 
     } 
    } 
} 
+0

您確定您使用ios8作爲您的構建目標嗎? – rvijay007

+0

我沒有使用ios8作爲目標,我試圖讓這個工作適用於ios6.1目標。我只是用模擬器再次測試它,它工作正常。但是,當我的設備(iPhone 5,7.11 OS)崩潰 – vladtax

+0

上運行[見特質收集這個答案崩潰ios7] [1] [1]:http://stackoverflow.com/ a/31728394/854258 – Cap

回答

2

UITraitCollection只有基礎框架開始的一部分iOS8上。這個錯誤說的是你的手機的操作系統(7.1.1)在它的庫中沒有UITraitCollection,這是真的,因爲這個類只是ios8 Foundation.framework庫的一部分。爲了減少應用程序大小,Apple庫在運行時都是動態加載的,因此它們不必與應用程序一起打包,因此您的應用程序只能訪問該特定iPhone上的ios7 Foundation.framework。如果你升級你的iPhone到ios8,它應該工作。

+0

是否有不同的方式來加載UIImage然後,以便它將與舊版本的os兼容? – vladtax

+0

是的,我想你可以取出代碼的特徵集合部分,'image = UIImage(named:「\(imageName)\(i).png」)'。我還沒有開始快速探索。 – rvijay007

+0

工作,謝謝! – vladtax

0

rvijay007的解釋是正確的,但解決方案是部分的(您不必將設備升級到iOS 8!它支持向後兼容性)。下面是正確答案:

嘗試重新加入Foundation.framework:

  1. 轉到您的項目的目標
  2. 選擇「常規」選項卡
  3. 在「鏈接的框架的圖書館」尋找基金會。框架中,選擇它並按下buttom中的減號(' - ')來刪除此框架。
  4. 現在按加號('+')並搜索Foundation.framework - 重新添加它,它應該可以修復您的崩潰。

希望它的作品 - 它爲我做的。

相關問題