当我按下一个按钮时,会出现一个模态UIViewController,在UIScrollView中显示UIImageViews的幻灯片。我这样做是为了每隔3秒换到下一个项目:
let when = DispatchTime.now() + 3
DispatchQueue.main.asyncAfter(deadline: when) {
scrollView.scrollToViewAtIndex(nextItem(), animated: true)
}
唯一的问题是,当我解雇这个UIViewController时,代码将等待延迟,然后崩溃。
我该如何解决这个问题? 感谢
答案 0 :(得分:0)
您保留对scrollView的强引用。如果你这样做,它应该只保持一个弱链接,因此当拥有的视图控制器被销毁时,它不会导致错误:
let when = DispatchTime.now() + 3
DispatchQueue.main.asyncAfter(deadline: when) { [weak self] in
self?.scrollView.scrollToViewAtIndex(nextItem(), animated: true)
}
当然你也可以切换到使用计时器,但这是另一个故事。