typealias
如果挑出swift中好用的功能,我认为typealias 应该是首当其冲的了
typealias:用来为已存在的类型重新定义名称的.
它的用法很广泛,理解起来也没有什么难度,所以在这我会列出几种typealias应用的场景,来达到熟悉它的目的. 能够在可以用到它的地方想到它,而不是在想到它的时候再用它~
- 重新定义闭包类型
- swift的闭包书写虽然好看了不少,但是如果大批量的书写闭包还是很累的而且还影响可读性和美观, 所以不妨试试typealias
typealias DownSuccess = (json: NSURLResponse, filePath: String?) -> ()
这样我们在使用它的时候只需要:
func Post(url:String? , parameter:NSDictionary , success: DownSuccess)
- protocol组合
- protocol在swift中强大了不少,多种不同的protocol可以组合成一个然后用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){
///
}
}
- 基本类型
- 这种用法在swift api中应用很广泛
public typealias AnyClass = AnyObject.Type
public typealias NSInteger = Int
- 自定义类型
- 在实际项目过程中,如果有OC和swift混编的情况,不免以后会对OC进行swift化,而OC和swift的命名系统相差很大,所以在重构之后不免要对整个项目进行 搜索-查找-替换 这是项非常耗时耗力的工作,而利用
typealias 可以巧妙的规避这个问题
举个栗子:
- 在实际项目过程中,如果有OC和swift混编的情况,不免以后会对OC进行swift化,而OC和swift的命名系统相差很大,所以在重构之后不免要对整个项目进行 搜索-查找-替换 这是项非常耗时耗力的工作,而利用
// OC中项目里有个类
#import "OCClass.h"
// swift重构之后
impot SwfitClass
typealias OCClass = SwfitClass
网友评论