Swift 在Xcode中创建多个UIImageView——一种技术构建速度快,一种技术构建速度慢。有什么区别?

Swift 在Xcode中创建多个UIImageView——一种技术构建速度快,一种技术构建速度慢。有什么区别?,swift,Swift,我可以通过传统的for循环创建图像视图,它构建的速度非常快: for (var i = 1; i < 10; i++){ let overImage = UIImage(named: "\(i).png") var overImageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: imageSize)) overImageView.image =

我可以通过传统的for循环创建图像视图,它构建的速度非常快:

    for (var i = 1; i < 10; i++){
        let overImage = UIImage(named: "\(i).png")
        var overImageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: imageSize))
        overImageView.image = overImage
        gridImageView.addSubview(overImageView)
        overImageView.alpha = 0
    }

有什么区别?为什么第二个示例会导致如此不同的构建时间/CPU负载?

很有趣。在其他上下文中,如果我尝试执行类似操作,编译器会生成一条错误消息,说明无法创建带有元素标签的单个元素元组。也许他们是想禁止这种模式,而这种模式从他们身边溜走了,导致了一些堕落的行为。但是我认为你可以简化它,让overImageUrls=[1.png,2.png,…],然后在overImageUrls中为name{…},你看不到这种奇怪的行为。苹果和桔子。这些循环不完全相同。此外,你到底在计时什么?我只是在计时,因为第二个示例大约需要60秒来构建和运行。for循环几乎立即发生。如果第一个方法字典不花这么长时间,我就不会尝试for循环。另一个细节是,当我使用Dictionary方法时,Xcode开始一直显示索引。如果我对它进行注释并构建,它的响应速度会立即提高。
    let overImageUrls = [(name: "1.png"), (name: "2.png"), (name: "3.png"), (name: "4.png"), (name: "5.png"), (name: "6.png"), (name: "7.png"), (name: "8.png"), (name: "9.png")]

    for (name) in overImageUrls {
        let image = UIImage(named: name)
        var overImageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: imageSize))
        overImageView.image = image
        gridImageView.addSubview(overImageView)
        overImageView.alpha = 0
    }