我有一个 UIViewController 显示从在线数据库中提取的数据表。我有一个单例管理器来处理这些数据的提取并提供表所需的数据。
这是经理如何工作的示例:
@property (nonatomic) NSArray *dataArray;
...
- (void)refreshDataSource
{
[AClass fetchInBackgroundWithCompletionHandler:^(NSArray *objects) {
self.dataArray = [NSArray arrayWithArray:objects];
}
}
...
- (NSArray *)tableViewDataSource
{
return self.dataArray;
}
视图控制器通过调用请求更新-refreshDataSource
,-viewDidLoad
但同时通过指向 -tableViewDataSource 向其 UITableView 提供来自管理器的缓存数据。
当视图控制器第一次出现时,一切都很好。我第二次展示相同的视图控制器时,应用程序挂起。网络请求也不会触发。
我发现的唯一解决方法是将我的-refreshDataSource
电话转移到-viewDidAppear:
。但这让我很恼火,为什么会发生这种情况,让我觉得这里一定有问题。
如果有人可以提供任何帮助或建议,那就太好了!