在代码中用CADisplayLink去执行动画监听,在动画未执行完时,画面左滑退出,闪退。 报错:unrecognized selector sent to instance 即对象回收了,但事件响应还需要它。
CADisplayLink在viewDidLoad中启用:
// YZTargetProxy防止强引用
displayLink = CADisplayLink(target: YZTargetProxy(target: self), selector: #selector(animationCallback))
// 添加到线程
displayLink?.add(to: .current, forMode: RunLoop.Mode.default)
解决这个问题,只要在viewDidDisappear中把displayLink从线程中主动移除掉。
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
displayLink?.remove(from: .current, forMode: RunLoop.Mode.default)
displayLink = nil
}