2012-01-10 59 views
2

我正在使用第三方庫的iOS應用程序。我想將我的項目遷移到使用ARC,但第三方庫仍在使用舊的內存管理。所以我想分開第三方代碼並將它放在一個沒有ARC的獨立項目中,然後以某種方式將該項目鏈接到我的iOS應用項目中,以便使用相同的配置將它們構建在一起。參考代碼在XCode 4.2中的單獨項目

這可能以非常簡單的方式完成,或者我最好關閉個別文件的ARC? (似乎非常繁瑣..)

我可以使用工作區嗎?其中一個項目是我的iOS應用程序,另一個只包含第三方代碼?

我玩過很多次,搜索了很多,但這似乎沒有任何簡單的靈魂,或者我錯了?

+0

你試過編譯它到一個靜態庫嗎?或者這對你的項目設置是不可能的? – 2012-01-10 15:36:44

+0

我不知道。當談到XCode時,我是一個新手,來自於在VS中工作的背景。我可以創建一個獨立於目標(設備,模擬器)的靜態庫嗎?或者我必須爲不同的目標和版本的iOS構建不同的庫?它可以自動化嗎?我試圖創建一個靜態可可觸摸庫,但並沒有真正成功地將其導入到我的主項目。猜測還有更多的不僅僅是拖放。 – Joel 2012-01-10 16:50:49

回答

4

所以我想出了自己,在不同博客的幫助下。這東西基本應該更加瑣碎和有據可查的......但在這裏我們去,這是我做過什麼讓一個庫AsiHttpRequest:

  1. 創建一個新的iOS項目。選擇'Cocoa Touch Static Library'模板。隨心所欲地稱呼它。你不想勾選'使用自動引用計數',因爲AsiHttpRequest不支持它。
  2. 爲您的圖書館項目選擇一個位置(稍後會有所重複)。
  3. 刪除由Xcode創建的默認.h和.m文件。
  4. 將AsiHttpRequest文件拖放到項目中
  5. 您可以添加AsiHttpRequest所依賴的框架,但是您必須將它們添加到主項目中,因此不是必需的。
  6. 嘗試構建項目,應該這樣做沒有錯誤。
  7. 打開主項目
  8. 從取景器,您的圖書館.proj文件拖動到您的主項目(在Xcode,因此它的土地「到主項目文件)
  9. 庫項目現在應該出現下您的主要項目(仍在XCode中)。它應該是可擴展的,你也應該能夠看到庫項目文件。如果沒有,請嘗試關閉所有打開的項目並重新打開主項目。
  10. 選擇主項目,並選擇目標。在構建階段 - 與庫鏈接二進制文件下,​​單擊+ -sign。
  11. 在框架列表中,您應該看到您的庫項目(稱爲像libname.a)。選擇該文件
  12. 新添加的文件可能會在框架列表中顯示爲紅色,不用擔心,它可以正常工作。猜猜這是一個錯誤。
  13. 仍在目標下,轉到生成設置
  14. 在標題搜索路徑下,將相對搜索路徑添加到庫.h文件所在的位置。這是相對於你的主要項目.proj文件。 (例如../some文件夾/ libproject /)
  15. 希望您的主項目能夠毫無錯誤地生成,並且將使用與主項目相同的配置同時構建庫項目。

我不知道這是一種好方法,還是有一些更簡單的方法來做到這一點。但是,我喜歡這個,因爲我可以在幾個項目中使用庫項目。如果我想更新圖書館項目,我只需要在一個地方完成,其他項目也會更新,因爲它們都參考了同一個項目。

編輯1: 我有一些使用目標c類別的庫項目的問題。我在嘗試調用這些方法時收到無法識別的選擇器發送到實例運行時錯誤。按照給出的答案here解決了這個問題。

  1. 轉到主體工程建設目標的設置並添加-ObjC到入口叫其它鏈接器標記

EDIT2: 我發現this模板創建通用框架。我沒有嘗試過,但我猜這樣的事情也會起作用。

+0

Joel,我剛剛在這裏提到過,我在第14點遇到了麻煩,即添加了標題路徑。你能否詳細說明一下?可能會在這裏看看我的問題:http://stackoverflow.com/questions/19852910/trouble-including-header-search-path-after-importing-project-as-a-reference-cre – 2013-11-08 09:01:57

相關問題