typealias
如果挑出swift中好用的功能,我認(rèn)為typealias 應(yīng)該是首當(dāng)其沖的了
typealias:用來(lái)為已存在的類(lèi)型重新定義名稱(chēng)的.
它的用法很廣泛,理解起來(lái)也沒(méi)有什么難度,所以在這我會(huì)列出幾種typealias應(yīng)用的場(chǎng)景,來(lái)達(dá)到熟悉它的目的. 能夠在可以用到它的地方想到它,而不是在想到它的時(shí)候再用它~
- 重新定義閉包類(lèi)型
- swift的閉包書(shū)寫(xiě)雖然好看了不少,但是如果大批量的書(shū)寫(xiě)閉包還是很累的而且還影響可讀性和美觀(guān), 所以不妨試試typealias
typealias DownSuccess = (json: NSURLResponse, filePath: String?) -> ()
這樣我們?cè)谑褂盟臅r(shí)候只需要:
func Post(url:String? , parameter:NSDictionary , success: DownSuccess)
- protocol組合
- protocol在swift中強(qiáng)大了不少,多種不同的protocol可以組合成一個(gè)然后用typealias重新命名
protocol changeName{
func changeNameTo(name:String)
}
protocol changeSex{
func changeSexTo(sex:SEX)
}
typealias changeProtocol = protocol<changeName,changeSex>
struct Persion:changeProtocol{
func changeNameTo(name:String){
///
}
func changeSexTo(sex:SEX){
///
}
}
- 基本類(lèi)型
- 這種用法在swift api中應(yīng)用很廣泛
public typealias AnyClass = AnyObject.Type
public typealias NSInteger = Int
- 自定義類(lèi)型
- 在實(shí)際項(xiàng)目過(guò)程中,如果有OC和swift混編的情況,不免以后會(huì)對(duì)OC進(jìn)行swift化,而OC和swift的命名系統(tǒng)相差很大,所以在重構(gòu)之后不免要對(duì)整個(gè)項(xiàng)目進(jìn)行 搜索-查找-替換 這是項(xiàng)非常耗時(shí)耗力的工作,而利用
typealias 可以巧妙的規(guī)避這個(gè)問(wèn)題
舉個(gè)栗子:
- 在實(shí)際項(xiàng)目過(guò)程中,如果有OC和swift混編的情況,不免以后會(huì)對(duì)OC進(jìn)行swift化,而OC和swift的命名系統(tǒng)相差很大,所以在重構(gòu)之后不免要對(duì)整個(gè)項(xiàng)目進(jìn)行 搜索-查找-替換 這是項(xiàng)非常耗時(shí)耗力的工作,而利用
// OC中項(xiàng)目里有個(gè)類(lèi)
#import "OCClass.h"
// swift重構(gòu)之后
impot SwfitClass
typealias OCClass = SwfitClass