0

afnetworking でネットワーク リクエストを送信すると、完了ブロックで結果が返されます。このブロックでは、そのクラスのデリゲートを解析して使用し、View Controller にデータをチェックするように指示します。

VC は、テーブル ビューで reloadData を呼び出します。唯一のことは、デリゲート reloadData を使用するとヒットまたはミスすることです (場合によっては機能します)。しかし、通知を投稿すると、完全に機能します。

別のスレッド上にあるため、問題は afNetworking ブロックから呼び出されるデリゲートに関係していると思います。そこには入れませんが、AFN はリクエストを自動的にマルチスレッド化すると思います。

なぜこの問題が発生するのですか?

4

2 に答える 2

1

@Durgaprasadは正しいです。彼のコピーかもしれません。まだいくつかの条件を追加しています。

if ([NSThread isMainThread]) 
{
  [self.tableView reloadData];
}
else 
{
   [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];

}
于 2013-06-21T11:33:31.620 に答える
0

二次スレッドで afnetworking を呼び出したと思います。そして、その呼び出し[tableView reloadData];から、他のスレッドからUIを変更できないため、これによりクラッシュが発生します。メインスレッドを使用する必要があります。そのためにこれを試してください。

   [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
于 2013-06-21T11:27:41.123 に答える