我有一个2选项卡iPhone应用程序:第一个从Web服务器下载图像,解析数据,然后在CollectionView中显示它。显然,我想在后台完成所有工作,并在完成后更新主线程中的UI。问题是,当我切换到相机(选项卡#2)时,我有一个黑屏预览。我使用了乐器,阅读关于这个问题的所有线索,但仍然无法使其工作。我成功并永久解决问题的唯一方法是仅使用选项卡#1中的主线程进行下载,然后解析然后更新UI。有人知道该怎么做?
这会随机阻挡相机:
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
NSOperation *op1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(initialPostLoading) object:@"Op1"];
NSOperation *op2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(downloadSomeBrands) object:@"Op2"];
NSOperation *completion = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"2");
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[self.collectionView reloadData];
[HUD show:NO];
[HUD setHidden:YES];
[refreshControl endRefreshing];
NSLog(@"Back in Main Thread");
}];
}];
[completion addDependency:op1];
[completion addDependency:op2];
[queue addOperations:@[op1, op2, completion] waitUntilFinished:NO];
NSLog(@"3");
这不会阻挡相机:
[self initialPostLoading];
[self downloadSomeBrands];
[self.collectionView reloadData];