Program Club

iOS-메인 스레드에서 실행 확인

proclub 2020. 10. 27. 23:43
반응형

iOS-메인 스레드에서 실행 확인


이 질문에 이미 답변이 있습니다.

메인 스레드function 에서 my를 호출하는 방법을 알고 싶습니다 .

메인 스레드function 에서 my 가 호출 되었는지 어떻게 확인 합니까?

(이것은 이전 질문따릅니다 ).


내 앱이 메인 ​​스레드에서만 내 코드를 실행하도록 할 수있는 규칙이 있습니까?

일반적으로이를 보장하기 위해 아무것도 할 필요가 없습니다. 일반적으로 목록으로 충분합니다. 스레드를 생성하고 백그라운드에서 코드를 실행하는 일부 API와 상호 작용하지 않는 한 기본 스레드에서 실행됩니다.

확실하게하고 싶다면 다음과 같이 할 수 있습니다.

[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];

메인 스레드에서 메서드를 실행합니다. (GCD에 상응하는 것도 있습니다.)


이렇게하면됩니다.

[[NSOperationQueue mainQueue] addOperationWithBlock:^ {

   //Your code goes in here
   NSLog(@"Main Thread Code");

}];

도움이 되었기를 바랍니다!


iOS> = 4를 사용하는 경우

dispatch_async(dispatch_get_main_queue(), ^{
  //Your main thread code goes in here
  NSLog(@"Im on the main thread");       
});

나는 이것이 멋지다고 생각한다. 심지어 일반적으로 올바른 스레드에서 호출되는 것을 책임지는 메서드의 호출자를 떠나는 좋은 형태이다.

if (![[NSThread currentThread] isMainThread]) {
    [self performSelector:_cmd onThread:[NSThread mainThread] withObject:someObject waitUntilDone:NO];
    return;
}

참고 URL : https://stackoverflow.com/questions/11582223/ios-ensure-execution-on-main-thread

반응형