我有一个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:
。但它让我痒痒,为什么会发生这种情况,并且让我感到不适,因为这里的某些事情一定是错的。
如果任何人可以提供任何帮助或建议,将是伟大的!
我在'dataArray'的'@ property'声明中看不到'retain'。 –
@ s.bandara在ARC中,strong是对象属性的默认值 – MaxGabriel
没错,我应该提到我的项目正在使用ARC。 – Ricky