-
1.懶加載的介紹
- swift中也有懶加載的方式
(蘋果的設(shè)計(jì)思想:希望所有的對(duì)象在使用時(shí)才真正加載到內(nèi)存中) - 和OC不同的是swift有專門的關(guān)鍵字來實(shí)現(xiàn)懶加載
- lazy關(guān)鍵字可以用于定義某一個(gè)屬性懶加載
- swift中也有懶加載的方式
-
2.懶加載的使用
格式
lazy var 變量: 類型 = { 創(chuàng)建變量代碼 }()懶加載的使用
懶加載的本質(zhì)是,在第一次使用的時(shí)候執(zhí)行閉包,將閉包的返回值賦值給屬性
-
lazy的作用是只會(huì)賦值一次
lazy var datalist:[String] = { ()->[String] in print("搞他") return ["1","2","3"] }()
-
3.getter與setter
import UIKit class Person: NSObject { // 在企業(yè)開發(fā)中不建議這樣寫 var _name : String? var name : String?{ get{ return _name } // 只要外界給通過對(duì)象,name給name賦值,那么就會(huì)保存在newValue set{ _name = newValue } } // 只讀的 ?可以不要 var gender : String?{ // 設(shè)置完值之后調(diào)用 // Swift中使用didSet來替代OC中重寫setter方法 didSet{ print(gender!) } } // 如果只重寫了get方法,那么這個(gè)屬性我們稱之為 計(jì)算型 屬性 // 也就是對(duì)應(yīng)OC中的只讀屬性 // 注意點(diǎn):計(jì)算型屬性是不占用內(nèi)存空間的 var age : Int{ get{ return 30 } } }
調(diào)用
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 在swift中,如果想使用某一個(gè)類,是不用導(dǎo)入頭文件的
// 因?yàn)镾wift 中新增了一個(gè)OC中以前沒有的概念 “命名空間”
// 只要是在一個(gè)命名空間下的資源都是共享的
// 默認(rèn)情況下,項(xiàng)目名稱就是命名空間
// 正式因?yàn)檫@樣,所以在做swift開發(fā)中有很多的坑
// 如果是swift項(xiàng)目要使用第三方框架,那么建議使用cocopods來集成框架
// 因?yàn)槿绻峭ㄟ^cocopods集成的框架,在另外一個(gè)項(xiàng)目中,那么命名空間就不一樣
// 這樣可以有效地避免三方中的類 和 我們自己的沖突
let person = Person()
person.gender = "jk"
print(person.age)
}
}