你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS建子工程

iOS建子工程

編輯:IOS開發綜合
  • 實際開發中,我們可能會同時開發好幾個端,比如樓主目前開發的家教平台,需要老師端,家長端,助教端三個端。有很多工具方法,或者封裝的自定義控件都是可以復用的。我們就可以把公用的代碼抽取出去,新建一個工程,統一管理。同步維護一份代碼,不需要在各個端各自維護。

    創建子工程很簡單:

    1 假設你已經有了自己的工程demo.xcodeproj,首先我們需要創建一個子工程,(File->new->project),我們要選擇靜態庫。如圖

    點擊下一步,給子工程起名字:subProject

    點擊下一步:選擇Add to自己的工程

    到此,第一步就結束了,我們創建了一個子工程,而且也添加到了自己的工程裡面,但是,這樣在自己工程中還是無法引用子工程的類。我們還需要設置一下自己工程的環境變量。

    2 設置環境變量:

    自己的工程demo下,選擇Bulid Settings ,找到User Header Search Paths。設置自己工程的絕對路徑,然後設置遞歸查找文件夾。

    3.添加target的依賴關系

    我們要保證編譯demo的時候先編譯subProject。

    選中demo Target,然後選中其Build phases選項,添加subProject target

    還有生成的.a文件也得添加進來。選擇Link Binary With Libraries

    這時候一些基本的方法已經可以用起來了。

    4、如果子工程中有圖片或者依賴文件怎麼辦?

    要把相關的依賴圖片copy出去:選中subProject target,進入Build phases選項,找到最下面的copy file欄,添加相關的文件:

    屏幕快照 2013-04-02 下午10.20.15

    5 如果存在category的時候,在demo工程Other Linker Flags裡面添加編譯的命令:

    注意:在ios5以及以上版本中,引入別的工程(如上)或者靜態庫,

    並且StoryBoards中使用了【引入的外部類(外部工程或者靜態庫裡面的類)】,
    那麼Other Linker Flags 裡面必須加上-ObjC,否則,會console會報錯
    error:Unknown class <外部的類名> in Interface Builder file.

    引用:http://developer.apple.com/library/mac/#qa/qa1490/_index.html   -ObjC,This flag causes the linker to load every object file in the library that defines an Objective-C class or category 意思是,使用這個標識,會把靜態庫中,定義了Objective-C class的文件或者定義了category類別的文件,全部加載進來。 因為你的靜態庫裡面擴展了一個已存在的類的category,那麼這個category是不會加載進來的。 在程序運行中,調用此類別的方法,就會報錯“selector not recognized”。   Important: For 64-bit and iPhone OS applications, there is a linker bug that prevents -ObjC from loading objects files from static libraries that contain only categories and no classes. The workaround is to use the -all_load or -force_load flags.  上面的意思是說 對於64位操作系統或者ios系統,-Objc存在一個bug,就是只包含categories ,而沒有任何class的靜態庫,是不會被加載進來。 拮據額這個bug:使用標識符:-all_load 或者 -force_load   子工程導入完成。整個框架瞬間高大上起來了。參考文章:https://www.ganlvji.com/xcode_subproject_project_dependency/
    1. 上一頁:
    2. 下一頁:
    蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
    Copyright © Ios教程網 All Rights Reserved