在做OC項(xiàng)目中經(jīng)常使用的就是懶加載,重寫getter方法, 什么時(shí)候用到getter方法什么時(shí)候去加載, 并且就加載一次,保證項(xiàng)目的效率
那么何為惰性初始化呢识啦?
從OC的代碼中不難看出秉氧,惰性初始化淹接,就是在變量第一次使用的時(shí)候才進(jìn)行初始化飞主。
那么Swift也有懶加載這么一說(shuō),而且Apple 很推薦我們使用懶加載, 并且還有一個(gè)關(guān)鍵字lazy
懶加載定義: var 變量名: 類型 = 閉包()
看一下下面的實(shí)例
private lazy var backBtn: UIButton = UIButton()
private lazy var likeBtn: UIButton = UIButton()
private lazy var sharedBtn: UIButton = UIButton()
private lazy var submitTitle: UILabel = UILabel()
private lazy var line:UIView = UIView()
private lazy var isLoadFinsih = false
private lazy var isAddBottomView = false
private lazy var showBlackImage = false
private lazy var detailVebView: UIWebView = UIWebView(frame: CGRectMake(0,0,AppWidth,AppHeight))
private lazy var tableFooterView = UIView()
private lazy var loadFinishScrollHeihgt: CGFloat = 0
private lazy var customNav: UIView = {
let customNav = UIView(frame: CGRectMake(0, 0, AppWidth, NavigationH))
customNav.backgroundColor = UIColor.whiteColor()
customNav.alpha = 0.0
return customNav
}()
Swift中的惰性初始化
Swift中腺占,有兩種方式來(lái)惰性初始化赃承。
第一種,簡(jiǎn)單表達(dá)式
lazy var first = NSArray(objects: "1","2")
第二種赘被,閉包
lazy var second:String = { return "second" }()
注意:不要忘記最后的小括號(hào)是整,只有加了小括號(hào),必包才會(huì)在掉用的時(shí)候立刻執(zhí)行民假。
惰性初始化的使用場(chǎng)景
- 屬性本身依賴于外部因素才能初始化
- 屬性需要復(fù)雜計(jì)算浮入,消耗大量CPU
- 屬性不確定是否會(huì)使用到
- 定制化的初始化
有些初始化只需要初始化一次,在變量定義的地方初始化羊异,有助于代碼維護(hù)