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