【发布时间】:2013-01-13 03:31:32
【问题描述】:
我有一个 UIViewController,它显示从在线数据库中提取的数据表。我有一个单身经理来处理这些数据的提取并提供表格所需的数据。
这是经理如何工作的一个例子:
@property (nonatomic) NSArray *dataArray;
...
- (void)refreshDataSource
{
[AClass fetchInBackgroundWithCompletionHandler:^(NSArray *objects) {
self.dataArray = [NSArray arrayWithArray:objects];
}
}
...
- (NSArray *)tableViewDataSource
{
return self.dataArray;
}
视图控制器通过在-viewDidLoad 中调用-refreshDataSource 请求更新,但同时通过指向-tableViewDataSource 为其UITableView 提供来自管理器的缓存数据。
当视图控制器第一次出现时,一切都很好。我第二次展示相同的视图控制器时,应用程序挂起。网络请求也不会触发。
我发现的唯一解决方法是将我的 -refreshDataSource 呼叫改为 -viewDidAppear:。但这让我很恼火,为什么会发生这种情况,也让我感到不安,这里一定有什么地方有问题。
如果有人能提供任何帮助或建议,那就太好了!
【问题讨论】:
-
我在您的
@property声明中没有看到retaindataArray。 -
@s.bandara 在 ARC 中,strong 是对象属性的默认值
-
没错,我应该提到我的项目是使用 ARC。