2011-12-06 58 views
1

我運行在一個iPad模擬器(4.3)的崩潰的應用程序由於缺少符號錯誤:的iPad模擬器(4.3)崩潰與dyld的錯誤

dyld: Symbol not found: _OBJC_CLASS_$_NSMetadataQuery 
    Referenced from: /Users/Me/Library/Application Support/iPhone Simulator/4.3.2/Applications/B13BE6DF-61B9-4C23-98E7-BEC72330FF19/iPad.app/iPad 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation 
in /Users/Me/Library/Application Support/iPhone Simulator/4.3.2/Applications/B13BE6DF-61B9-4C23-98E7-BEC72330FF19/iPad.app/iPad 

在什麼時候在發射過程中做到這一點錯誤發生?我似乎並沒有被實際執行任何代碼 - 我已經把斷點在兩種情況:這個類將被實例化的位置(這是當版本< 5.0 從未執行),並在委託方法applicationWillFinishLaunching:

但是,碰撞發生在任何點被擊中之前。

我知道潛在的問題是在iOS 5.0中添加了NSMetadataQuery類,但我當然想要保持與早期版本的向後兼容性。 (我正在使用正確的NSClassFromString調用。)

我有一個iPhone應用程序,它在iOS 5.0上使用NSMetadataQuery,並且在運行4.3或更低版本時跳過它,並在模擬器中正常工作。因此,我很困惑爲什麼這個特定的程序崩潰。

NSMetadataQuery類是否確實存在於iOS 4.2和4.3版的iPhone版本中,但不在iPad版本中? (並且API直到iOS 5.0才暴露出來)

+0

你是否在iOS 5.0中使用過庫文件libdyld.dylib?這可能是問題,因爲這個文件不適用於5.0以下版本的iOS –

+0

我真的不知道 - 我怎麼才能確定我是否使用這個文件?我沒有明確記得添加它。 –

+0

您使用低於4.2的XCode版本嗎? –

回答

2

潛在的問題是Foundation框架在iPad版本的應用程序(即崩潰)中強烈鏈接,並且在iPhone版本。 (這允許iPhone版本在鏈接時不需要這些類的情況下運行,當然,在iPhone模擬器的4.X版本上調用/實例化任何這些類也會類似地崩潰)。

問題通過改變(在Xcode中的項目信息下)Foundation.framework的依賴關係選項需要可選

相關問題