次のコードがあります。
[[AHPinterestAPIClient sharedClient] getPath:requestURLPath parameters:nil
success:^(AFHTTPRequestOperation *operation, id response) {
[weakSelf.backgroundQueue_ addOperationWithBlock:^{
[self doSomeHeavyComputation];
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[weakSelf.collectionView_ setContentOffset:CGPointMake(0, 0)];
[weakSelf.collectionView_ reloadData];
[weakSelf.progressHUD_ hide:YES];
[[NSNotificationCenter defaultCenter] performSelector:@selector(postNotificationName:object:) withObject:@"UIScrollViewDidStopScrolling" afterDelay:0.3];
[weakSelf.progressHUD_ hide:YES];
}];
}];
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[weakSelf.progressHUD_ hide:YES];
[weakSelf.collectionView_.pullToRefreshView stopAnimating];
NSLog(@"Error fetching user data!");
NSLog(@"%@", error);
}];
何らかの理由で、これは iOS 5 では問題なく機能しましたが、iOS 6 では機能しませんでした (クラッシュします)。iOS 6 については、まだ NDA の対象であるため、ここでは質問しません。私が知りたいのは、上記のコードが間違っているかどうかです。はいの場合、どうすれば修正できますか。
コードを mainQueue の外側のブロック内に配置しても問題ありません。ここでやろうとしているのは、[self doSomeHeavyComputation] が完了した後にのみ NSOperationQueue mainQueue を実行することです。これは依存関係です。この依存関係を追加するにはどうすればよいですか?
アップデート:
役立つ場合のクラッシュログは次のとおりです。