问题:
我有一个UITableView
,一旦收到NSNotification
,就会被控制器重新加载。在表刷新时,cellForRowAtIndexPath
用作datasource
的数据结构可能会发生变化。
背景:
每当应用的数据模型发生变化时,NSNotification
都会被触发,处理UITableViewController
的{{1}}的{{1}}会被通知执行&# 34; datasource
"方法。 " UITableView
" method从模型中检索新数据,然后请求refreshReload
。这是类MVC模式,其中模型被更改,控制器得到通知并且视图得到更新。当快速通知背靠背快速更改数据时,应用程序崩溃。我觉得当表调用refreshReload
时:包含数据的数据结构在执行期间会发生变化。
要避免这种情况需要遵循的好模式,有没有办法停止重新加载表格,以便我可以先执行停止然后更改[tableView reloadData]
?
答案 0 :(得分:1)
如果我正确理解你的问题,我会使用全局标志来锁定数据更改。
e.g。使用singleton
模式来保存您的标记值。检查标志是否被锁定。如果标志已锁定,请不要调用或禁用数据更改方法。当UITableView正在更新时,锁定标志直到更新完成。
答案 1 :(得分:0)
如果数据频繁更改,即在表更新时,表将获得另一次重新加载调用,则会发生崩溃。
解决应用中的崩溃问题:
你可以做的第一件事是避免频繁调用重载表。保持一个Flag(在你为接收通知设置的Notification observer方法中),该标志告诉表现在当用户进入这个tableview屏幕时你需要重新加载你创建一个定时器,它会在每隔一分钟之后调用一个方法。在该方法中,检查标志,如果是,则重新加载表并将标志值更改为否,否则您无需执行任何操作。
我希望这肯定会解决您的问题。