NSOperation使ImagePicker显示黑色预览屏幕

时间:2014-03-12 17:24:31

标签: ios iphone multithreading uiimagepickercontroller

我有一个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];

0 个答案:

没有答案