iOS 测试技巧与实践
1. 注入闭包创建新实例
在某些情况下,代码外部知道要传入什么实例时,注入实例是可行的。但当代码内部需要创建一个难以处理的依赖实例时,比如依赖用户输入,这时注入闭包是一种很好的延迟创建新实例的方法,闭包就像一个小型工厂。
1.1 使用初始化器注入闭包
ClosureInitializerViewController 是一个基于 XIB 的视图控制器。我们先给它一个通过初始化器设置的闭包属性。初始化器将其声明为 @escaping 闭包,以便将其存储在属性中供后续执行。
private let makeAnalytics: () -> Analytics
init(makeAnalytics: @escaping () -> Analytics = { Analytics.shared }) {
self.makeAnalytics = makeAnalytics
super.init(nibName: nil, bundle: nil)
}
初始化器参数有一个默认闭包,这使得视图控制器可以设置自己的闭包,除非调用处传入一个。由于我们定义了指定初始化器,Swift 会要求提供 init(coder:) 方法,可通过 Xcode 菜单中的 Editor ▶ Fix All Issues 生成以下代码:
required init
超级会员免费看
订阅专栏 解锁全文

952

被折叠的 条评论
为什么被折叠?



