我在Swift中编写了非常简单的代码:
protocol MultiplyByTwoProtocol {
func multiply() -> Int
}
class MultiplyByTwoClass: MultiplyByTwoProtocol {
private let n: Int
init(n: Int) { self.n = n }
func multiply() -> Int { return 2 * n }
}
class DynamicDispatchSwift {
private let items: [MultiplyByTwoProtocol]
init(n: Int) {
self.items = Array<Int>.generate(size: n).map(MultiplyByTwoClass.init)
}
func run() {
items.forEach { input in
_ = input.multiply()
}
}
}
Run Code Online (Sandbox Code Playgroud)
(btw generate方法Array只是创建一个随机数组Ints)
然后,我在Instruments中运行该代码,得到以下结果:

正如您所看到的,几乎有一半的时间需要进入outlined init with copy of MultiplyByTwoProtocol.有谁知道它是什么?
谢谢你的帮助.
swift ×1