1
초마다 백그라운드에서 메소드를 수행하려는 iPhone
애플리케이션이 있습니다.iPhone SDK - 백그라운드 스레드에서 반복 프로세스 실행
그래서 내 메인 스레드에서, 나는 나의 UIViewController
viewDidLoad()
에 다음 코드를 다음 방법으로
[NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(repeatedMethod) userInfo:nil repeats:YES];
:
-(void)repeatedMethod {
if(!processIsRunning) {
processIsRunning = YES;
[self performSelectorInBackground:@selector(runProcessInBackground:) withObject:myImage];
}
}
-(void)runProcessInBackground:(UIImage *)image {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
... Some operations ...
... also call a method on the main thread which sets isProcessRunning to NO
[pool release]
}
나는이 설정 한 방법, 새 스레드 매 초마다 생성됩니다 (프로세스가 아직 실행 중이 아니면 내 processIsRunning
플래그 덕분).
자, 내 질문은 :
(1)이이 작업을 수행하는 가장 좋은 방법이 있나요? 아니면 배경 스레드를 유지하고 재사용하는 더 적절한 방법이 있습니까?
(2) 가장 빠른 방법은 무엇입니까? 메소드가 호출 될 때마다 새로운 백그라운드 스레드를 회전 시켜서 시간을 잃어 버리는가?
코드는 정상적으로 작동합니다. 주 스레드에서 모든 것을 실행했을 때 코드가 약간 느려졌습니다 (궁극적으로는 수행하고 싶지 않음).
모든 조언은 훌륭합니다! 전에이 유형의 질문을 다루는 사람이 있습니까?
많은 감사, 브렛 귀하의 코멘트에서 질문을 바탕으로
이 질문에 대한 내 대답을보십시오. http://stackoverflow.com/questions/8759264/worker-thread-ios/8759329#8759329 –
@Andrew, Thanks! 한 가지 질문 : GCD와 관련하여 어떻게 객체를 전달할 수 있습니까? 위의 코드에서이 객체는 'myImage'입니다. – Brett