2012-09-28 63 views
9

當我有一個ARC()的應用程序,建立一個靜態庫(也ARC)。該應用程序將啓動正常,但在執行的操作讀取或靜態庫寫入一個@property應用程序將與此錯誤崩潰:ARC應用崩潰訪問@property形式ARC靜態庫

dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic 
 Referenced from: /var/mobile/Applications/0E7ADBB4-FFE5-4CEB-B418-8A35A92E99D4/MyApp.app/MyApp 
 Expected in: /usr/lib/libobjc.A.dylib 

dyld: Symbol not found: _objc_setProperty_nonatomic 
 Referenced from: /var/mobile/Applications/0E7ADBB4-FFE5-4CEB-B418-8A35A92E99D4/MyApp.app/MyApp 
 Expected in: /usr/lib/libobjc.A.dylib 

所有建議已經瞭解連結非ARC庫到ARC應用程序(反之亦然)。但這些都是ARC。

回答

32

應用程序的Base SDK被設置到iOS 6和iOS Deployment Target設置到iOS 5.0然而,對於靜態庫兩種Base SDK & iOS Deployment Target分別設置到iOS 6

確保了Base SDK & iOS Deployment Target在應用程序匹配,庫解決了這個問題。

+1

有關使各地的比賽好一點。除非你打算支持iOS 6的功能可用時(並就大型測試頭疼和需要額外的功能檢測代碼),我還建議基地SDK和iOS部署目標設置爲相同的事情(的iOS 5在這種情況下)。儘管蘋果的官方說法,你應該總是對最新的SDK鏈接,Xcode的團隊在WWDC一致認爲,這種做法是很脆弱的,因爲當你使用不支持的功能不正確的編譯器給你任何警告。 –

+0

超 - 我的許多靜態庫之一有這個問題 - 現在修復 - 謝謝。 – Ramesh

+0

如何爲靜態庫更改'Base SDK'和'iOS Deployment Target'? – fredley