2012-02-10 55 views
2

我正在製作一個靜態庫產品。我想使用ARC,但我的一位客戶希望將其應用程序定位到iOS 3.2。他們也想要瞄準ARMv6架構。我可以將使用ARC的靜態庫鏈接到項目目標iOS 3.2嗎?

好的。我必須接受這個要求。據我所知,沒有weak引用的ARC只是編譯器功能,所以我認爲靜態庫本身沒有區別,或者它不需要iOS 4.0。但據我所知,Apple將最低iOS限制爲4.0。所以我不能自己決定,因爲我沒有3.2設備:(

是否有人在iOS 3.2上測試ARC代碼?如果運行良好,我將轉到ARC,並使用ARC編譯我的庫,並通過我認爲我可以強制他們使用4.0,但我不確定ARMv6的來源,ARMv6沒有任何理由不起作用,但是我無法測試的事實讓我擔心,請讓我知道你的經歷。

+1

正如我在回答何況,還有涉及在iOS 4.x的靜態庫的兼容性細微的差別,所以這個問題是不是你的完整副本。 – 2012-02-10 18:24:01

+0

謝謝@BradLarson。關閉投票無法刪除:( – Eonil 2012-02-11 10:46:32

回答

3

自動引用計數需要現代運行時才能工作(iOS 4.0和64位Snow Leopard中存在),因此啓用ARC的項目無法定位iPhone OS 3.x.它們在運行時會失敗。

將啓用ARC的靜態庫部署到iOS 4.x有一個小問題,你應該知道。正如我在this answer中所描述的,如果有人在非ARC應用程序中使用啓用了ARC的靜態庫,則他們需要手動鏈接到libarclite_iphoneos.a庫(如果它們的目標是在iOS 4.x上)。這在默認情況下包含在支持ARC的應用程序中,但在與支持ARC的庫鏈接的非ARC應用程序中將缺失。

相關問題