我有一個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