我試圖讓視頻開始播放時avplayer的屏幕截圖,所以我需要在後臺快速運行此代碼,所以它不會阻止主線程和其他控件同時運行,試圖運行代碼GCD格式我不能夠運行,請幫我做,它停在那裏我加入到我的數組(數組我加入UIImage對象)...GCD流如何編寫
if (isCaptureScreenStart)
{
if (CMTimeGetSeconds([avPlayer currentTime])>0)
{
if (avFramesArray!=nil)
{
queue = dispatch_queue_create("array", NULL);
dispatch_sync(queue, ^{
[avFramesArray addObject:[self screenshotFromPlayer:avPlayer maximumSize:avPlayerLayer.frame.size :CMTimeGetSeconds([avPlayer currentTime])]];//stop at this line
NSLog(@"count:%d",[avFramesArray count]);
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"Frame are created:%d",[avFramesArray count]);
if ([avFramesArray count]==0)
{
NSLog(@"Frame are over");
}
});
});
}
}
}
dispatch_release(queue);
編輯:
我想我現在需要使用dispatch_group_async
這個塊..請給出一些指導h嗷嗷使用方法:
if (isCaptureScreenStart)
{
if (CMTimeGetSeconds([avPlayer currentTime])>0)
{
if (avFramesArray!=nil) {
dispatch_group_async(serial_group1, serial_dispatch_queue1, ^{
[avFramesArray addObject:[self screenshotFromPlayer:avPlayer maximumSize:avPlayerLayer.frame.size :CMTimeGetSeconds([avPlayer currentTime])]];
});
}
}
dispatch_group_notify(serial_group1, serial_dispatch_queue1, ^{
NSLog(@"task competed");
});
}
我現在用的這個塊,但上面的執行是有爭議的運行,如果我使用dispatch_suspend(serial_dispatch_queue1);
其停止而我又需要開始塊的執行又是什麼,我需要用我也用dispatch_resume(serial_dispatch_queue1);
嘗試再次加載但系統告訴我崩潰
dispatch_group我需要如何創建??以及如何使用告訴步驟或任何示例 – Pallavi 2013-02-13 14:34:09