2012-10-23 3 views
1

나는 검증을 할 필요가 있고이를 위해 나는 작업이 여전히 하나의 작업이있는 경우 내가 당신 SerialQueue 한 번에 발사 코드를 작업dispatch_queue_t SerialQueue if가 아직 실행 중인지 확인하는 방법입니다. IOS GCD

` SerialQueue = dispatch_queue_create("miColaEnSerie", NULL); 
     dispatch_async(SerialQueue, ^{ 
    [self loadImageFriend:init finalWhitNumber:final img1WithArray:infoImages1 img2WithArray:infoImages2 img3WithArray:infoImages3]; 
    });` 

답변

3

을 사용하여 실행되고 있는지 알 필요가 그러나 많은 작업이 당신에게 수 SerialQueue에 추가가있는 경우

isSerialQueueRunning = YES; 
dispatch_async(SerialQueue, ^{ 
    [self loadImageFriend:init finalWhitNumber:final img1WithArray:infoImages1 img2WithArray:infoImages2 img3WithArray:infoImages3]; 
    isSerialQueueRunning= NO; 
}); 

: 다음

@property (assign) BOOL isSerialQueueRunning; 

: 당신은 같은 클래스에 원자 속성을 추가 할 수 있습니다 BOOL isSerialQueueRunning에서 NSInteger serialQueueTasks으로 변경하고 그에 따라 증가/감소시킵니다. 그런 다음 0인지 확인하면 현재 대기열에 아무것도 없다는 것을 의미합니다.

때로는 작업이 완료되었을 때 정보를 얻고 그 후에 몇 가지 작업을 수행하기 위해 알림을 구현하는 것이 더 나을 때가 있습니다.

+0

정말 고맙습니다. – asl87

관련 문제