在我的应用程序中,我已从一个视图控制器推送到另一个视图控制器。在该页面中,我启动了一个计时器并每 1 秒更新一次
UITableview
(使用 UITableview reloaddata
)。
我已在
viewwillappear
函数中启动计时器,并在 viewwilldisappear
中使计时器无效。
但是当计时器运行时,当我回到视图控制器时,我的应用程序迅速崩溃。
请帮助我?预先感谢...
我的猜测是,当我推回视图控制器时,时间表会在之前的视图控制器中重新加载,此时它会崩溃。我正在使用 try catch 但没有任何区别。当我们不在该页面时,我们可以停止表格视图重新加载吗?
您的应用程序崩溃的主要原因是,每当您从 anotherViewController 返回到 oneViewController 时,您的表视图在您的计时器仍处于活动状态并试图更新 tableView 之间被释放,并且当您访问释放对象时,应用程序将获得坠毁了。因此,您需要在正确停止计时器之前,如果计时器有效,则将其归零。 希望我的回答对你有帮助。
您强烈需要在类的 dealloc 方法中向所有计时器发送 invalidate 消息
- (void)dealloc
{
if ([_someTimer isValid]) [_someTimer invalidate];
}