2012-07-16 18 views
0

最初我們構建了iOS應用程序,目標是5.0+,並使用ARC來簡化內存管理。後來爲了向後兼容,我們決定支持iOS 4.3。然後,我只是iOS:未找到符號_ojbc_loadweakretained,同時切換目標到ios 4.3(圓弧)

  1. 安裝的iOS 4.3模擬器
  2. 修改應用程序的部署目標4.3
  3. 清潔,建設,運營

,但應用程序與下面的輸出

,意想不到的退出dyld:找不到符號:_objc_loadWeakRetained

參考文獻:/ Users/xxx/Library/Application Support/iPhone Simulator/4.3.2/Applications/16E98912-33B5-4660-A9A3-879D92735E44/myApp.app/myApp

預計位於:/ Applications/Xcode。應用/內容/開發/平臺/ iPhoneSimulator.platform /開發商/軟件開發工具包/ iPhoneSimulator4.3.sdk /系統/資源庫/框架/ Foundation.framework /基金會

我知道4.3不支持弱引用,但編譯器在編譯時從不抱怨,它在運行時崩潰。

更新:
我用微弱的關鍵字unsafe_unretained相反,應用程序反正跑了。但是,我得到了很多的警告一樣

__NSAutoreleaseNoPool():有沒有到位池自動釋放類__NSArrayM的對象0x564bd90 - 剛剛泄露「*」

是不是正常如何消除這些警告?

+0

線程池檢查您baseSDk這將是5.0 。 – Iducool 2012-07-16 09:01:18

+0

我的baseSDK是5.1,我應該改爲4.3嗎?我在列表中找不到4.3 sdk – fifth 2012-07-16 09:16:23

回答

0

那麼,它會看到,如果你更改部署目標回5.1,如果問題消失很有趣。我的猜測是它不會。

唯一的方法,我知道要得到這種錯誤的是:

1)是創建一個併發的NSOperation,然後不能提供runloop /自動釋放池爲它 2)不使用的對象,然後嘗試創建的main.m 3自動釋放池)創建一個NSThread消息在該線程的對象,而不必創建一個自動釋放池

假設問題是最有可能3),你可以找到如何創造這個past discussion

相關問題