當(dāng)我們?cè)谟肙C寫(xiě)APP的時(shí)候少梁,如果想為現(xiàn)有的類(lèi)添加方法又不想繼承該類(lèi)我們可能會(huì)想到創(chuàng)建一個(gè)Category
來(lái)實(shí)現(xiàn)辈赋,那么我們的語(yǔ)言換成Swift如何解決這個(gè)問(wèn)題袋哼?如何在Swift中創(chuàng)建Category
?
在Swift中并沒(méi)有Category
這樣一個(gè)概念尤辱,但是你可以用Swift的Extensions
來(lái)實(shí)現(xiàn)砂豌。
Swift中Extension
與OC中Category
的不同點(diǎn):
- 它們不用命名
- 如果你想給一個(gè)存在的類(lèi)型定義一個(gè)extension去添加新的方法,這個(gè)新的方法將應(yīng)用于該類(lèi)型的所有實(shí)例光督,即使它們?cè)趀xtension定義前被創(chuàng)建阳距。
- 綜上,它們不僅僅在定義某個(gè)類(lèi)里面起作用结借,它們應(yīng)用于整個(gè)項(xiàng)目筐摘。
目前,Extension
可以做的工作:
- 添加
computed propertie
和computed static properties
- 定義實(shí)例方法和類(lèi)型方法
- 提供新的初始化方法
- 定義和使用新的內(nèi)嵌類(lèi)型
- 創(chuàng)建已存在
protocol
的extension
基本的生命語(yǔ)法如下:
extension SomeType {
// new functionality to add to SomeType goes here
}
如何在你的項(xiàng)目中創(chuàng)建Extension
文件
- command + n,在彈出的對(duì)話(huà)框中選擇
Swift File
- 文件名稱(chēng)命名為你想創(chuàng)建分類(lèi)的類(lèi)名+你自定義的名字(eg:
UIImage+Cropping
)