Mobile-아이폰iOS

[iOS 오류해결] Main Thread Checker: UI API called on a background thread:

무한열정 2019. 11. 22. 09:33

Main Thread Checker: UI API called on a background thread: -[UIApplication setNetworkActivityIndicatorVisible:]

위와 같은 메시지가 발생했다.

이유는 Thread에서 UI로 접근하는경우 Main Thread에서 처리해야 한다.

이것은 iOS / Android 모두 동일하다. 이건 퍼포먼스를 위해서 iOS 초기부터 이런 규칙이 있었는데

다만, 이상이 없는 부분에서 추가 메시지가 나오는걸로 봐서 규칙이 강화된듯 하다.


아래 메시지가 뜨면 크래쉬가 발생하지는 않지만

앱의 실행속도가 현저하게 느려진다.


가장 간단한 처리 방법은 다음과 같다.

Inner 블럭에 필요한 UI접근 코딩을 추가하면 된다. 정말 간단하다 ^^

    dispatch_async(dispatch_get_main_queue(), ^{

        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

    });


이렇게 하면 경고 메시지도 않나오고

딜레이 현상도 없어진다.