IOS 元件化的好處

2021-08-21 01:15:36 字數 3146 閱讀 2187

// 建立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上建立乙個遠端索引庫。然後將該索引庫新...