迭代包含未拥有引用的结构体数组会无限进行。

11
在我的项目中,我有一个结构体,其中包含对类实例的未拥有引用。尝试循环遍历这些结构体的数组会导致我的应用无限循环。更糟糕的是,我可以循环遍历一个类型为该结构体的空数组,它仍然会发生这种情况。
我在这个示例中使用了NSString的引用,以使示例更小,但使用自定义类也没有帮助。
值得注意的是,这种行为只发生在64位的设备和模拟器上,而不是32位的设备和模拟器。我已经测试过Xcode 6.1、6.1.1和6.2。
struct TestStruct {
    unowned let reference: NSString
}

let anArray: [TestStruct] = []

for anObject in anArray {
    NSLog("This is called endlessly")
}

我是不是做错了什么?这种安排不受支持吗?还是这只是一个我应该报告的快速错误?


1
这显然是一个 bug,你说呢?一个非常好的 bug。很好的例子,很好的测试。不幸的是我只能点赞一次! - matt
你是否在自己的电脑上进行了测试并发现了这个问题?自从我发现这个问题后,我已经重新安装了Xcode,并多次重启了电脑,但我仍然抱着一丝希望,希望问题可能是出在我的电脑上。 - Acey
3
你疯了吗?我不会运行那段代码!我的电脑可能会爆炸。你已经把你的电脑搞垮了。 - matt
哈哈,只是开玩笑。是的,我的结果与你的一致。 - matt
那完全没有意义。太棒了。 - Nate Cook
1个回答

0

正如评论所指出的,这似乎是Swift编译器中的一个错误。通过Apple的Bug报告者进行报告将有助于我们所有人。


1
我的是 rdar://21126703。 - Klaas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接