// 建立pod索引庫,固定寫法,並且定義索引庫的名字為s,後續通過s,就能拿到索引庫
pod::spec.new
do |s|
// 設定名稱
// 設定版本號
s.version = "0.0.1"
// 設定摘要
// 設定詳情
s.description = "good"
// 設定倉庫主頁
// 設定許可證
s.license = "mit"
// 設定作者
s.author =
// 設定倉庫源,表示在哪可以找到元件工程
s.source = " }
// 設定 原始檔路徑 => 不是整個工程的檔案,而是自己封裝的**,以後別的工程引入,就會引入這裡的**。
// s.dependency = '' 元件工程依賴哪些第三方框架
// s.frameworks = 'uikit', 'mapkit' 元件工程依賴哪些原生框架
// s.resource_bundles = {} 元件工程資源
end
podspec檔案注意點:s.description
:不能為空
podspec檔案注意點:s.license
:不能亂填,必須是有這樣的協議,比如(mit)
podfile檔案
:指定主工程載入哪些元件庫,裡面描述好元件庫對應的podspec檔案在哪,就知道去哪載入元件**。
podfile檔案.png
podspec檔案.png
方式二: 使用cocoapods命令:pod lib create 元件**名稱
根據podfile描述,找到對應**庫的描述檔案podspec
podspec中描述,去哪(s.source)才能找到**庫,並且找到之後,需要拷貝哪些檔案(s.source_files)到自己的工程中。
pod path.png
註冊trunk
推送自己的podspec到cocoapods的索引庫
測試能否索引到
但是有問題,如果以後要新增公有的索引庫,比如afn,就找不到了
# 表示先去找私有,在找公有
source
''source
''target '測試私有索引庫'
do pod 'xmglib'
pod 'afnetworking', '~> 3.1.0'
end
工程檔案在使用的時候,使用pod update 就能載入最新版本元件**.
snip20170213_2.png
snip20170213_4.png
```
nsbundle *selfbundle = [nsbundle bundleforclass:self];
nslog(@"%@",selfbundle);
// 獲取bundle還不夠,在bundle的xmglib.bundle檔案中
// 注意要全名
nsstring *path = [selfbundle pathforresource:@"xmglib.bundle/@2x.png" oftype:nil];
uiimage *image = [uiimage imagewithcontentsoffile:path];
```
snip20170223_19.png
nsbundle *bundle = [nsbundle bundleforclass:[self
class]];
// 獲取當前bundle名稱
nsstring *bundlename = bundle.infodictionary[@"cfbundlename"];
bundlename = [nsstring stringwithformat:@"%@.bundle",bundlename];
// xib名稱需要拼接bundle名稱,否則找不到xib
nsstring *nibname = [nsstring stringwithformat:@"%@/xmghomerecommendcell",bundlename];
[self.tableview registernib:[uinib nibwithnibname:nibname bundle:[nsbundle bundleforclass:[self
class]]] forcellreuseidentifier:id];
podfile檔案中新增描述use_frameworks!
snip20170223_21.png
snip20170223_22.png
snip20170223_23.png
snip20170213_7.png
snip20170224_28.png
s.subspec 'gif'
do |gif|
gif.ios.deployment_target = '7.0'
gif.source_files = 'sdwebimage/flanimatedimage/*.'
// 設定依賴,依賴自己元件的子元件core
gif.dependency 'sdwebimage/core'
gif.dependency 'flanimatedimage', '~> 1.0'
gif.xcconfig =
end
snip20170223_18.png
// 只會引入gif元件
pod 'sdwebimage/gif'
iOS元件化方案調研
ios元件化方案探索 一 什麼是元件化?1 什麼是元件?元件 一般來說用於命名比較小的功能塊,如 下拉重新整理元件 提示框元件。而較大粒度的業務功能,我們習慣稱之為 模組 如 首頁模組 我的模組 新聞模組。這次討論的主題是元件化,這裡為了方便表述,下面模組和元件代表同乙個意思,都是指較大粒度的業務模...
iOS 元件化(OC篇)
網上關於元件化的理論很多而且已經比較成熟,理論方面請參看這篇集合文章ios元件化。1 要元件化必須進行解耦。我們談解耦,並不是完全解除 之間的耦合,通過學習和實踐這是不合理也不可能的。我們解耦的目的其實是為了解除 模組相互間的依賴,或者說我們的目的就是讓 模組變得單向依賴,像乙個插頭一樣可以自由拔插...
ios元件化開發(一)建立元件化
ios元件化開發,類似於自己寫乙個第三方庫一樣,然後被主工程呼叫。元件化開發,需要乙個索引庫,因為每個元件都有乙個 podspec 檔案,因此需要乙個庫去專門存放索引。這類似於一本新華字典有專門的目錄,通過目錄可以快速找到對應的元件和版本。首先可以在github上建立乙個遠端索引庫。然後將該索引庫新...