前言:多谢谦逊,少一些迷之自信,多一些机会,少一些尴尬。
一、泛型T和Any的区别?
1、相同点
泛型和Any都能代表任意类型,用在函数定义上表示可以接受任意类型的参数。
2、不同点
a.泛型可以用以灵活定义函数,类型检查仍然由编译器负责;
b.Any类型可以避开swift的类型系统,还是慎用为好。
推荐使用泛型,这样的话你无需牺牲类型安全就能在编译器的帮助下写出灵活的函数。
二、单例
由于swift3.0版本已经废除了GCD - dispatch_once
,所以我们可以使用以下三种方法替代:
1、全局静态方法
static var shareSingleton1_Var = SingletonClass()
static let shareSingleton1_Let = SingletonClass()
2、结构体创建
class func shareSingleton2() -> SingletonClass {
struct onceSingleton {
static var singleton = SingletonClass()
}
return onceSingleton.singleton
}
3、带立即执行闭包初始化器的全局变量:
static var singleton: SingletonClass? = {
var singleton = SingletonClass()
return singleton
}()
class func shareSingleton3() -> SingletonClass {
// `dispatch_once()` call was converted to a static variable initializer
return singleton!
}
网友评论