메인 스레드에서 UIApplication을 사용해야한다고 말하는 사람들도 있지만, Apple의 문서에이 문서가 없습니다. 누군가가 UIApplication을 별도의 스레드에서 사용하는 것이 안전한지 알려 줄 수 있습니까? 안전하지 않다면 어디에서 기록되어 있습니까?iOS : 메인 스레드 안전 이외의 스레드에서 UIApplication 메서드를 호출합니까?
편집 : 로컬 알림을 조작하는 방법에 중점을 둡니다.
메인 스레드에서 UIApplication을 사용해야한다고 말하는 사람들도 있지만, Apple의 문서에이 문서가 없습니다. 누군가가 UIApplication을 별도의 스레드에서 사용하는 것이 안전한지 알려 줄 수 있습니까? 안전하지 않다면 어디에서 기록되어 있습니까?iOS : 메인 스레드 안전 이외의 스레드에서 UIApplication 메서드를 호출합니까?
편집 : 로컬 알림을 조작하는 방법에 중점을 둡니다.
대부분의 UIKit 클래스는 스레드로부터 안전하지 않습니다. 이것은 WWDC 등에서 오랫동안 논의되어 왔지만 잘 설명되어 있지 않습니다. 내가 찾을 수있는 가장 좋은 방법은 반복적으로 보조 스레드에서 UIKit을 호출하는 것이 허용되지 않는지를 설명하는 TN2109입니다.
이 규칙에는 많은 문서화 된 예외가 있습니다. 예를 들어, beginBackgroundTaskWithExpirationHandler 및 UIApplication 관련 메서드는 주 스레드가 아닌 호출로부터 안전한 호출이라고 명확하게 표시되어 있습니다. (이것은 또한 UIApplication의 다른 방법이 있음을 의미한다 하지이 구체적으로 불러되기 때문에, 다른 스레드에서 호출. 안전)
대부분 (있는 UIImage 그리기와 관련된 다른이 규칙에 대한 예외뿐만 아니라이있다 및 UIColor 인스턴스는 스레드로부터 안전합니다 (적어도 iOS 4 현재).
UIApplication은 UIResponder의 하위 클래스이며 UIKit 프레임 워크의 일부입니다. 그래서 그것은 UIKit 클래스 스레드 안전하지 않은 것으로 문서화되어 있기 때문에 스레드 안전하다고 생각합니다.
또한 setStatusBarOrientation : animated :와 같은 메소드를 가지고 있습니다. 모든 UI 기반이며 주 스레드보다 다른 스레드에서 호출 할 수 없습니다.
사용하려는 방법에 대해 더 구체적으로 설명하면 도움이됩니다. – rmaddy
@rmaddy 감사합니다. 검사하는 메소드를 추가했습니다. – CarmeloS