반응형
별도의 스레드에서 실행되는 iphoneios
별도의 스레드에서 코드를 실행하는 가장 좋은 방법은 무엇입니까?다음과 같은 경우:
[NSThread detachNewThreadSelector: @selector(doStuff) toTarget:self withObject:NULL];
또는:
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(doStuff:)
object:nil;
[queue addOperation:operation];
[operation release];
[queue release];
저는 두 번째 방법을 사용하고 있지만 제가 읽은 웨슬리 쿡북은 첫 번째 방법을 사용합니다.
제 생각에 가장 좋은 방법은 Grand Central Dispatch(GCD)라고 불리는 libdispatch를 사용하는 것입니다.그것은 당신을 iOS 4 이상으로 제한하지만, 그것은 매우 간단하고 사용하기 쉽습니다.백그라운드 스레드에서 일부 처리를 수행한 다음 주 실행 루프에서 결과를 처리하는 코드는 놀랍도록 쉽고 압축적입니다.
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Add code here to do background processing
//
//
dispatch_async( dispatch_get_main_queue(), ^{
// Add code here to update the UI/send notifications based on the
// results of the background processing
});
});
아직 그렇게 하지 않았다면 libdispatch/GCD/blocks에서 WWDC 2010의 비디오를 확인하십시오.
iOS에서 멀티스레딩을 위한 가장 좋은 방법은 GCD(Grand Central Dispatch)를 사용하는 것입니다.
//creates a queue.
dispatch_queue_t myQueue = dispatch_queue_create("unique_queue_name", NULL);
dispatch_async(myQueue, ^{
//stuffs to do in background thread
dispatch_async(dispatch_get_main_queue(), ^{
//stuffs to do in foreground thread, mostly UI updates
});
});
저는 사람들이 올린 모든 기술을 시도해보고 어떤 것이 가장 빠른지 알아보겠지만, 이것이 가장 좋은 방법이라고 생각합니다.
[self performSelectorInBackground:@selector(BackgroundMethod) withObject:nil];
나는 NSTread에 당신이 쉽게 블록에서 스레드를 실행할 수 있는 카테고리를 추가했습니다.여기서 코드를 복사할 수 있습니다.
언급URL : https://stackoverflow.com/questions/3869217/iphone-ios-running-in-separate-thread
반응형
'bestsource' 카테고리의 다른 글
봄에 어떤 종류의 "이벤트 버스"를 이용합니까?빌트인, 리액터, 아카? (0) | 2023.08.12 |
---|---|
Jquery 코드는 머리글에 넣어야 합니까 아니면 바닥글에 넣어야 합니까? (0) | 2023.08.12 |
판다/파이썬에서 엑셀 스프레드시트의 공식을 보려면 어떻게 해야 합니까? (0) | 2023.08.12 |
고정 테이블 셀 폭 (0) | 2023.08.12 |
목록에서 가장 오래된/가장 어린 날짜/시간 개체 찾기 (0) | 2023.08.12 |