我有一個使用CoreImage中提供的面部檢測的項目,它最初是在Xcode 4.6.3中使用iOS6 SDK進行部署5.1的目標。隨着iOS7的發佈,我更新爲Xcode5和iOS7 SDK,將部署目標保持爲5.1。使用在iOS6.1設備上運行的Xcode 5的「CIFaceFeature」中的「dyld:Symbol not found」找不到符號
這很好,直到我在Xcode5中添加了一個新類,它引用CIFaceFeature對象中的屬性,特別是hasLeftEyePosition
。該代碼在運行iOS7.02的iPhone5S和運行iOS7.02的iPod 5th上運行得很好,但是當我嘗試在運行iOS6.1的iPhone4上調試時運行它時,我在設備上獲得啓動畫面,然後控制檯中的以下輸出:
dyld: Symbol not found: _OBJC_IVAR_$_CIFaceFeature.hasLeftEyePosition
Referenced from: /var/mobile/Applications/...
Expected in: /System/Library/Frameworks/CoreImage.framework/CoreImage
in /var/mobile/Applications/...
我已驗證CoreImage.framework是否包含在鏈接中。關於這個錯誤的奇怪之處在於,我在Xcode 4.6.3中添加的文件中訪問代碼庫中CIFaceFeature對象的屬性。
我也證實,如果我註釋掉新加入的代碼hasLeftEyePosition
,那麼應用程序在iOS6.1 iPhone4上運行得很好。
有沒有人有這種類型的錯誤的經驗?是否有需要更改的新增文件的設置,以便與正確的框架鏈接?由於我沒有看到問題所在,以及我在代碼中的其他地方訪問完全相同的屬性而沒有任何問題,所以我在這裏抓住了一些吸管。
我不是繼承CIFaceFeature,我通過'feature.hasLeftEyePosition'使用屬性 –
@AlexLindblad然後,哇。這使得看起來clang正在優化對實例變量訪問的屬性訪問,這對我來說似乎不可能和/或非常困難。你可以嘗試關閉優化嗎? (又名「優化級別」設置爲無) –
@AlexLindblad另外,可以肯定的是,您能向我們展示您正在註釋的代碼以解決問題嗎? –