小编arn*_*rnt的帖子

`概述init与协议副本'是什么意思?

我在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

5
推荐指数
1
解决办法
600
查看次数

标签 统计

swift ×1