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()