gpt4 book ai didi

Xcode Beta 6.1 和 Xcode 6 GM 因奇怪的原因卡住了索引

转载 作者:搜寻专家 更新时间:2023-10-30 22:22:13 24 4
gpt4 key购买 nike

我正在开发一个 swift 应用程序,在某些时候我有一个类似于这样的代码:

 import UIKit

class ViewController: UIViewController {
private var a: UIImageView!
private var b: UIImageView!
private var c: UILabel!
private var d: UILabel!
private var e: UILabel!
private var f: UILabel!
private var g: UIView!
private var h: UIView!
private var i: UIView!
private var j: UIView!
private var k: UIImageView!
private var l: UIView!
private var m: UIView!
private var n: UIView!
private var o: UIView!
private var p: UIScrollView!
private var q: UIView!

override func viewDidLoad() {
super.viewDidLoad()

let viewBindingsDict = ["a" : a,
"b" : b,
"c" : c,
"d" : d,
"e" : e,
"f" : f,
"g" : g,
"h" : h,
"i" : i,
"j" : j,
"k" : k,
"l" : l,
"m" : m,
"n" : n,
"o" : o,
"p" : p]
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

出于某种原因,当我添加这段代码时,xcode 卡住了,我无法做任何其他事情。

打开 Activity Monitor,显示 sourcekitservice 和 swift 使用了超过 100% 的 CPU。

我用上面的代码创建了这个示例项目:https://dl.dropboxusercontent.com/u/1393279/aaaaaaa.zip

我已经尝试过清理派生数据、重新安装 Xcode、重新启动、等待几分钟等。它只是行不通。

最佳答案

类似的事情在我身上发生过几次,我通过将长语句分成多行解决了这个问题。

我在 Playground 上测试了您的代码,我立即注意到 SourceKitService 进程占用了我 100% 的 CPU。

在您的代码中,我看到最长的语句是字典初始化,因此第一种方法是使其可变并每行使用少量项目进行初始化。

Swift 没有为字典提供 += 运算符,所以我们首先需要一个(感谢 @shucao ):

func +=<K, V> (inout left: Dictionary<K, V>, right: Dictionary<K, V>) -> Dictionary<K, V> {
for (k, v) in right {
left.updateValue(v, forKey: k)
}
return left
}

在您的工具集中,您可以按如下方式初始化字典:

var viewBindingsDict = ["a" : a, "b" : b, "c" : c, "d" : d, "e" : e]
viewBindingsDict += ["f" : f, "g" : g, "h" : h, "i" : i, "j" : j]
viewBindingsDict += ["k" : k, "l" : l, "m" : m, "n" : n, "o" : o]
viewBindingsDict += ["p" : p]

每行最多选择 5 个项目。

但在您的代码中,您将字典声明为不可变的 - swift 不提供任何语句来在其声明后初始化不可变的 - 幸运的是我们可以使用闭包来实现这一点:

let viewBindingsDict = { () -> [String:UIView] in
var bindings = ["a" : self.a, "b" : self.b, "c" : self.c, "d" : self.d, "e": self.e]
bindings += ["f": self.f, "g" : self.g, "h" : self.h, "i" : self.i, "j" : self.j]
bindings += ["k" : self.k, "l" : self.l, "m" : self.m, "n" : self.n, "o" : self.o]
bindings += ["p": self.p]
return bindings
}()

关于Xcode Beta 6.1 和 Xcode 6 GM 因奇怪的原因卡住了索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25810625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com