当我尝试使用Swift时,遇到了一个崩溃的情况,但我仍然没有弄清楚原因。
让我们定义一下:
让我们定义一下:
class TestClass {
var iteration: Int = 0
func tick() -> Void{
if iteration > 100000 {
print("Done!")
return
}
iteration++
tick()
}
}
tick()
函数会调用自身,并每次增加iteration
。任何如下类型的调用:
let test = TestClass()
test.tick()
在递归次数较小的情况下(在我的iMac上约为50000次),程序会崩溃,并显示EXC_BAD_ACCESS
错误:
如果我定义一个类似的struct
而不是class
,就不会崩溃(至少在这些限制下不会)。请注意,当程序崩溃时,仅使用了几MB的RAM。
我还不能解释为什么会崩溃。有人能解释一下吗?callbackStorage
的值似乎有些可疑,但我没有找到任何线索。
struct
,发现问题确实比预期更严重。 我已经将正确答案归功于dans3itz,因为他第一个回答了问题,但是您的答案也非常感激。谢谢! - Tom