使用 Block 代码块进行实例化操作

Swift 为我们提供一种非常优雅的类实例化语法, Block 代码块实例化。

使用 Block 代码块实例化,可以减少不必要的命名冲突,同时可以让代码看起来更舒服。

使用 Block 代码块实例化的另一个好处是内存的管理会变得更简单。

让我们看一个例子吧! 假设我们有一个Child类。

class Child {
    
    var name: String?
    var age: Int?
    
}

一个正常的实例化写法是这样的。

let myChild = Child()
myChild.name = "Pony"
myChild.age = 8

但是,使用 Block 进行实例化,可以这样写。

let myChild: Child = {
    let item = Child()
    item.name = "Pony"
    item.age = 8
    return item
}()

在一个类方法中使用 Block 进行实例化,如果 Block 中有 self 的引用,不要忘记添加 [unowned self] 标签,否则可能会有循环引用问题。

import UIKit

class Child {
    
    var name: String?
    var age: Int?
    
}

class Main {
    
    let name = "Pony"
    let age = 8
    
    func sayHello() {
        let myChild: Child = { [unowned self] in
            let item = Child()
            item.name = self.name
            item.age = self.age
            return item
        }()
    }
    
}

let x = Main()
x.sayHello()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容