iOS 스레드에 대한 간단한 설명
일반적인 비동기 네트워크 요청에는 completion Block이 있습니다. 이 completion Block은 주 라인에서 호출됩니다.따라서 많은 시간을 소모할 수 있는 코드(예를 들어 위에서 언급한 Zip 패키지를 처리하는 방법)도 이런 Block에 넣는 것이 좋지 않다.다음 코드와 같습니다.
[request setCompletionBlock:^{
NSLog(@"Zip file downloaded.");
NSData *data = [request responseData];
[self processZip:data sourceURL:sourceURL]; // Ack - heavy work on main thread!
}];
, blcok , Grand Central Dispatch(GCD) , , GCD 。 , , dispatch_async, 。
GCD , ,GCD ; GCD 。
dispatch_async , dispatch , block。
dispatch ( dispatch _create ), ( dispatch_get_main_queue)。
dispatch (queue) , block 。 , (shared data)。
: , dispatch 。 dispatch block, block 。
- GCD
dispatch_queue, dispatch queue
// Add new instance variable
dispatch_queue_t backgroundQueue;
dispatch_queue_t : dispatch queue 。
dispatch queue
backgroundQueue = dispatch_queue_create("com.razeware.imagegrabber.bgqueue", NULL);
dispatch queue, dispatch queue 。 null DISPATCH_QUEUE_SERIAL( null) DISPATCH_QUEUE_CONCURRENT。
DISPATCH_QUEUE_SERIAL : block dispatch 。
DISPATCH_QUEUE_CONCURRENT: block dispatch 。 , barrier block 。
dispatch queue
- (void)process {
dispatch_async(backgroundQueue, ^(void) {
[self processHtml];
});
}
- (void)process [self processHtml]; processHTMl , dispatch_async processHtml backgroundQueue 。
- NSOperations operation
NSOperations GCD , NSOperation GCD。 NSOperation , operation, operation operation。 submit block operation queue 。
Bingo!
GCD 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception in thread main java.lang. NoClassDefFoundError 오류 해결 방법즉,/home/hadoop/jarfile) 시스템은 Hello World 패키지 아래의class라는 클래스 파일을 실행하고 있다고 오인하여 시스템의 CLASSPATH 아래 (일반적으로 현재 디렉터리를 포함) Hell...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.