带我飞4iOS点滴iOS-swift

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

2015-12-02  本文已影响300人  PonyCui

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()
上一篇下一篇

猜你喜欢

热点阅读