詳解swift中xcworkspace多項(xiàng)目管理
給大家詳細(xì)簡(jiǎn)介了xcworkspace多項(xiàng)目管理的設(shè)置方法,一起來(lái)學(xué)習(xí)下。
技術(shù)說(shuō)明:
今天在這里分享 swift下的 xcworkspace多項(xiàng)目管理(架構(gòu)思想),能為我們?cè)陂_(kāi)發(fā)中帶來(lái)哪些便捷?能為我們對(duì)整個(gè)工程的維護(hù),整理,模塊解偶帶來(lái)哪些優(yōu)勢(shì)?以及在swift與OC下的混編開(kāi)發(fā)中的調(diào)用會(huì)遇到哪些問(wèn)題?
帶著問(wèn)題探研:
(1).xcworkspace工程怎么創(chuàng)建?工程framework如何創(chuàng)建?主工程項(xiàng)目如何創(chuàng)建?
(2).主工程調(diào)用子工程framework如果配置?
(3).framework與framework之間如何調(diào)用?
(4).xcworkspace工程Pods的集成,framework的Pods第三的集成?
(5).Podfile文件的編輯,以及對(duì)應(yīng)主工程,對(duì)應(yīng)framework的編寫(xiě)方式?
--------------歷史分析-----------------------
你還在搭建這樣的框架嗎?
缺點(diǎn):
這種方式搭建的項(xiàng)目會(huì)隨著項(xiàng)目功能不斷的強(qiáng)大,從而會(huì)使模塊文件越來(lái)越龐大,也會(huì)使項(xiàng)目維護(hù)思維近近模糊,
業(yè)務(wù)層代碼與數(shù)據(jù)層代碼和項(xiàng)目核心層代碼相互交織,無(wú)法拆分,不符合一個(gè)中上等級(jí)以及長(zhǎng)遠(yuǎn)發(fā)展公司型的構(gòu)架思想!
來(lái)看下大公司項(xiàng)目的搭建吧:
優(yōu)點(diǎn)很明確,個(gè)個(gè)模塊可以拆分,架構(gòu)思想清晰明朗,業(yè)務(wù)層獨(dú)立清晰沒(méi)有耦合
--------------xcworkspace項(xiàng)目創(chuàng)建--------------
File -> New -> Workspace
--------------子工程framework創(chuàng)建 (注意:新建主工程,不要?jiǎng)?chuàng)建成framework)
1 :File -> New -> Project -> framework (創(chuàng)建的是靜態(tài)庫(kù))
2 :修改添加目標(biāo)到workspace:(就是上一步創(chuàng)建的Workspace工程)
--------------主工程調(diào)用子工程framework相關(guān)配置--------------
第一:子工程暴露文件出來(lái):必須順序執(zhí)行
BuildPhases -> Headers -> Public(只有放入共有欄,才能調(diào)用)-> 導(dǎo)入項(xiàng)目代碼文件(一般默認(rèn)放在Project中)
BuildPhases -> Headers -> Public -> 中導(dǎo)入需要暴露給的OC 的頭文件 (一般默認(rèn)實(shí)現(xiàn))
(注意:只有混編的時(shí)候才需要導(dǎo)入,也就是沒(méi)有混編,framework中的.h文件可以刪除)
BuildPhases -> Compile Sources -> 中導(dǎo)入項(xiàng)目代碼文件
第二:把需要提供外部調(diào)用的類(lèi),屬性和方法,加public修飾(swift)
第三: 編譯(⌘+B)一下工程,生成framework(重要,配置如果改動(dòng),刪除對(duì)應(yīng)生成的framework,重新編譯生成)
——————分別—真機(jī)編譯:
——————分別—模擬器編譯:
Show In Finder ,確認(rèn)生成framework
第四:主項(xiàng)目導(dǎo)入framework
把生成的framework拖入主項(xiàng)目中(這樣做比較好),
———————不建議以下做法————————
//選擇主項(xiàng)目 -> General -> Embedded Binaries -> 選擇framework導(dǎo)入
(Embedded Binaries導(dǎo)入,會(huì)同步Linked Frameworks and Librares導(dǎo)入)
第五:在需要調(diào)用framework ipa 的文件中 import 相關(guān)framework的工程名,即頭文件,完成
------------------- framework之間相互調(diào)用 ipa --------------
General —> Linked Frameworks and Libraries —> 導(dǎo)入指定framework
********到這里framework與主項(xiàng)目之間的調(diào)用已經(jīng)完成,可以實(shí)現(xiàn)了!
--------------------Pods的集成------------------
第一:創(chuàng)建的主項(xiàng)目,創(chuàng)建的多靜態(tài)庫(kù)(注意必須在同一級(jí)目錄下)
第二:終端cd 項(xiàng)目跟目錄:
第三:終端指令:touch Podfile (此處為空太),創(chuàng)建Podfile文件
第四:Podfile文件的編輯
案列:-------
platform :ios, ‘8.0' ———可以寫(xiě)在最上面,標(biāo)示公用 use_frameworks! ———用cocoapods導(dǎo)入OC框架到swift項(xiàng)目必須寫(xiě) workspace 'MyWorkspace.xcworkspace' //workspace文件名 project 'MyApp2/MyApp2.xcodeproj' //主工程路徑„ target 'MyApp2' do project 'MyApp2/MyApp2.xcodeproj' //工程路徑 pod 'Masonry', '~> 1.0.2' end target 'MyApp1' do project 'MyApp1/MyApp1.xcodeproj' //framework pod 'SnapKit', '~> 1.0.2' pod 'SDWebImage', '~> 1.0.2' end
第五:終端下載指令 pod install
第六:framework調(diào)用第三方框架
查看項(xiàng)目:未導(dǎo)入,項(xiàng)目無(wú)法調(diào)用
導(dǎo)入查看項(xiàng)目:項(xiàng)目同步
注意:swift 版的framework調(diào)用OC寫(xiě)的第3方,必須在.h 里面聲明頭文件,才能調(diào)用
----------------補(bǔ)充 : 靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)的區(qū)別
靜態(tài)庫(kù)有 .a 和 .framework
動(dòng)態(tài)庫(kù)有.dylib 和 .framework
后來(lái).dylib動(dòng)態(tài)庫(kù)又被蘋(píng)果替換成.tbd的形式
靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)是相對(duì)編譯期和運(yùn)行期的:
1.靜態(tài)庫(kù)在程序編譯時(shí)會(huì)被鏈接到目標(biāo)代碼中,程序運(yùn)行時(shí)將不再需要改靜態(tài)庫(kù)
2.動(dòng)態(tài)庫(kù)在程序編譯時(shí)并不會(huì)被鏈接到目標(biāo)代碼中,只是在程序運(yùn)行時(shí)才被載入,因?yàn)樵诔绦蜻\(yùn)行期間還需要?jiǎng)討B(tài)庫(kù)的存在
總結(jié):
同一個(gè)靜態(tài)庫(kù)在不同程序中使用時(shí),每一個(gè)程序中都得導(dǎo)入一次,打包時(shí)也被打包進(jìn)去,形成一個(gè)程序。
而動(dòng)態(tài)庫(kù)在不同程序中,打包時(shí)并沒(méi)有被打包進(jìn)去,只在程序運(yùn)行使用時(shí),才鏈接載入(如系統(tǒng)的框架如UIKit、Foundation等),所以程序體積會(huì)小很多,但是蘋(píng)果不讓使用自己的動(dòng)態(tài)庫(kù),否則審核就無(wú)法通過(guò)。
相關(guān)文章
openstack重啟swift服務(wù)后報(bào)錯(cuò)問(wèn)題解決方案
這篇文章主要介紹了解決openstack重啟swift服務(wù)后報(bào)錯(cuò),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08Swift開(kāi)發(fā)之UITableView狀態(tài)切換效果
這篇文章主要介紹了Swift開(kāi)發(fā)之UITableView狀態(tài)切換效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08SwiftUI 中創(chuàng)建反彈動(dòng)畫(huà)的實(shí)現(xiàn)
這篇文章主要介紹了SwiftUI 中創(chuàng)建反彈動(dòng)畫(huà)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10淺談在Swift中關(guān)于函數(shù)指針的實(shí)現(xiàn)
這篇文章主要介紹了淺談在Swift中關(guān)于函數(shù)指針的實(shí)現(xiàn),是作者根據(jù)C語(yǔ)言的指針特性在Swifft中做出的一個(gè)實(shí)驗(yàn),需要的朋友可以參考下2015-07-07Swift中實(shí)現(xiàn)點(diǎn)擊、雙擊、捏、旋轉(zhuǎn)、拖動(dòng)、劃動(dòng)、長(zhǎng)按手勢(shì)的類(lèi)和方法介紹
這篇文章主要介紹了Swift中實(shí)現(xiàn)點(diǎn)擊、雙擊、捏、旋轉(zhuǎn)、拖動(dòng)、劃動(dòng)、長(zhǎng)按手勢(shì)的類(lèi)和方法介紹,本文分別給出了各種手勢(shì)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-01-01Swift代碼自定義UIView實(shí)現(xiàn)示例
這篇文章主要為大家介紹了Swift如何自定義UIView的實(shí)現(xiàn)示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步,早日升職加薪2021-10-10純swift實(shí)現(xiàn)ipad版簡(jiǎn)單美團(tuán)界面功能
這篇文章主要為大家詳細(xì)介紹了純swift實(shí)現(xiàn)ipad版簡(jiǎn)單美團(tuán)界面功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11