2010-10-28 52 views
2
To support OS 3.x, please set Base SDK to iPhone Device 4.0 and iPhone OS Deployment Target to iPhone OS 3.x. Extra linker flags may be needed if NSConcreteGlobalBlock and UIBackgroundTaskInvalid runtime error occur under 3.x. 
The linker flags are: 
-weak_framework UIKit 
-weak_library /usr/lib/libSystem.B.dylib 

編輯: IM仍然得到同樣的生成錯誤,甚至連接後:cl.ly/c69ca3f8a336d7e41256如何添加以下額外的鏈接器標誌?

回答

1

您可能已經做到了這一點,但你切換iOS的部署目標 3.2和基地SDK在構建設置4.x中?如果你已經設置了這兩個並添加了鏈接器標誌,那麼我無法解釋爲什麼你會得到一個構建錯誤。

2
  • 您在Xcode目標或應用程序雙擊打開信息窗口

  • 切換到 「生成」 選項卡

  • 添加 「-weak_framework UIKit的-weak_library /usr/lib/libSystem.B.dylib」 到 「其他鏈接器標記」( 「鏈接」 下)

+0

即使在鏈接之後,我仍然會收到相同的構建錯誤:http://cl.ly/c69ca3f8a336d7e41256 – 2010-10-28 07:16:24

1

不確定是什麼導致了構建問題。但NSConcreteGlobalBlock和UIBackgroundTaskInvalid都讓我覺得你在使用後臺處理的應用程序中遇到問題,仍然需要在3.x上運行。

就我個人而言,我從來沒有見過這些問題,並且我從來沒有聯繫過弱UIKit或libSystem。即使在支持3.x並且支持4.0功能(如塊和背景音頻)的應用程序中,我也不需要建議的修復程序。

要達到此目的的一般規則:不要在可能在3.x上執行的代碼中使用塊。所以只能在 - (void)applicationDidEnterBackground:(UIApplication *)應用程序中開始背景。這種代理方法在3.x協議中不存在,因此不會被調用。如果您在3.x上調用的方法中使用塊,它將導致崩潰。

+0

fyi:如果不使用塊,就不可能支持打印。所以如果你想打印和你需要支持回3.x你顯然有這個問題。 – Dad 2011-02-28 18:54:00

相關問題