1. 泛型
2.只读存储属性的初始化
下面增加一个分类,可以使得只读属性在闭包中初始化由于只读属性带有getter的,只能是计算属性。那么如果需要只读存储属性,初始化代码比较复杂,要求一次初始化,多次读取。当然可以在类的初始化函数中赋初值,但是这样就会导致多个只读属性的赋初值要与声明处分离,代码结构不够清晰。下面增加一个分类,可以使得只读属性在闭包中初始化。由于只读属性带有getter的,只能是计算属性。那么如果需要只读存储属性,初始化代码比较复杂,要求一次初始化,多次读取。当然可以在类的初始化函数中赋初值,但是这样就会导致多个只读属性的赋初值要与声明处分离,代码结构不够清晰。下面增加一个分类,可以使得只读属性在闭包中初始化。
1. 添加分类
下面增加一个分类,可以使得只读属性在闭包中初始化由于只读属性带有getter的,只能是计算属性。那么如果需要只读存储属性,初始化代码比较复杂,要求一次初始化,多次读取。当然可以在类的初始化函数中赋初值,但是这样就会导致多个只读属性的赋初值要与声明处分离,代码结构不够清晰。下面增加一个分类,可以使得只读属性在闭包中初始化。由于只读属性带有getter的,只能是计算属性。那么如果需要只读存储属性,初始化代码比较复杂,要求一次初始化,多次读取。当然可以在类的初始化函数中赋初值,但是这样就会导致多个只读属性的赋初值要与声明处分离,代码结构不够清晰。下面增加一个分类,可以使得只读属性在闭包中初始化
extension NSObject{
public convenience init<T:NSObject>(config:((T)->Void)) {
self.init()
config(self as! T)
}
}
2. 使用该构造函数声明属性并赋初值
fileprivate let backgroundView = UIView{ (view:UIView) in
//初始化该控件的外观等属性
view.backgroundColor = UIColor.white
// ...
}