オンライン データベースから取得したデータのテーブルを表示する 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 にマネージャーからのキャッシュ データを提供します。
ビュー コントローラが初めて表示されるときは、すべて問題ありません。2 回目に同じビュー コントローラーを提示しようとすると、アプリがハングします。ネットワーク要求も発火しません。
私が見つけた唯一の修正は、代わりに-refreshDataSource
呼び出しを移動することです。-viewDidAppear:
しかし、なぜこれが起こっているのかが気になり、ここで何かが間違っているに違いないことに不快感を覚えます。
誰かが助けや提案を提供できれば、それは素晴らしいことです!