일반적인보기 컨트롤러 코드를 작성할 때이 코드가 단일 이벤트 루프 스레드에서만 호출된다고 가정 할 수 있습니까? 스레드로부터 안전하게하려면 어떤 종류의 클래스가 필요합니까? 여러 스레드가 관련된 일반적인 상황은 무엇입니까?iOS 응용 프로그램에서 스레드 안전성에 대해 언제 걱정해야합니까?
답변
일반적인 UIViewController 코드를 작성하는 경우 iOS의 스레드 안전성에 대해 걱정할 필요가 없습니다. iOS에서는 UI에 관한 메시지가 주 스레드에서 실행 중이어야합니다.
자기 자신이 백그라운드에서 일부 메시지를 수행하지 않으면 일반적으로 스레드에 대해 걱정할 필요가 없습니다. 대부분의 경우 스레드는 항상 주 스레드에 있습니다.
P. Game Kit와 같은 일부 프레임 워크는 백그라운드에서 메시지를 수행하지만 UI와 관련이 없으며 Apple의 문서는 메시지가 주 스레드에서 실행 중인지 확인하도록 경고합니다.
Concurrency Programming Guide이 도움이 될 수 있습니다.
concurrency programming guide이 좋습니다. 다음은 몇 가지 중요한 사항을 명심하십시오.
- 메인 스레드에서만 UI를 업데이트해야합니다. 이것은 미묘한 방법으로 당신을 얻을 수 있습니다 ...
- NSNotifications는 그들이 해고 된 스레드에서 받게됩니다. 따라서 스레드를 시작하고 NSNotification에 가입하여 UI 작업을 트리거하는 경우 가져온 스레드가 무엇인지 확인해야합니다. 주 스레드에 없으면 NSObject의 performSelectorOnMainThread : withObject : waitUntilDone :을 사용하여 주 스레드에서 가져옵니다.
- UI가 아닌 컨텍스트로 드로잉을한다면 핵심 그래픽이 이제 스레드로부터 안전하다고 믿습니다. (저는 CATiledLayer가 이것 때문에 약간의 영리한 일들을한다고 생각합니다)
- 일반적으로 뷰 컨트롤러의 경우, 메인 스레드의 이벤트 루프 만 생각하면됩니다. 다른 스레드에서 자신의 이벤트 루프를 만들기 전에 두 번 생각하십시오.
확인하려면 Core Graphics는 스레드로부터 안전하며 CATiledLayer는 다중 백그라운드 스레드 (단일 코어 CPU를 사용하는 경우 하나의 백그라운드 스레드 만)에서 모두 그릴 수 있습니다. –
- 1. 스레드 안전성에 대한 질문
- 2. NSUserDefaults의 충돌에 대해 걱정해야합니까?
- 3. iOS 응용 프로그램에서 전화하십시오.
- 4. HierarchyID가 부족하다는 것에 대해 걱정해야합니까?
- 5. .NET 코드의 난독 화에 대해 걱정해야합니까?
- 6. iOS 응용 프로그램에서 WCF 호출
- 7. 스레드 응용 프로그램에서 Indy의 오류!
- 8. wxWidgets에 스레드 내 응용 프로그램에서
- 9. 멀티 스레드 응용 프로그램에서 SetCurrentDirectory
- 10. 작은 응용 프로그램에서 스레드 동기화
- 11. 언제 내 응용 프로그램에서 ACL을 사용해야합니까?
- 12. 가짜 계정/웹 사이트의 로그인에 대해 걱정해야합니까?
- 13. 인스턴스 필드 및 스레드 오리진의 안전성에 대한 질문
- 14. ios 응용 프로그램에서 ios sdk4.0을 종료하지 않고 전화 걸기
- 15. 스레드 안전성은 언제 문제가됩니까?
- 16. 단일 스레드 - 멀티 스레드 응용 프로그램
- 17. 다중 스레드 프로그램에서 분기
- 18. 대형 Parralel 응용 프로그램에서 스레드 잠금
- 19. 다중 스레드 응용 프로그램에서 메모리가 부족하지 않도록하기
- 20. D-Bus 비동기 메서드 호출을 사용하는 파이썬의 스레드 안전성에 관해
- 21. MS SQL 서버로 Asp.net 웹 사이트 실행 - 언제 확장성에 대해 걱정해야합니까?
- 22. iOS 응용 프로그램에서 세션을 유지하는 방법은 무엇입니까?
- 23. iOS 응용 프로그램에서 열린 파일 뷰어 (PDF)
- 24. iOS 응용 프로그램에서 PDF 파일을 편집하려면 어떻게해야합니까?
- 25. iOS 응용 프로그램에서 키보드 언어 변경 UITextField에서
- 26. iOS 응용 프로그램에서 콘텐츠를 변경하는 방법은 무엇입니까?
- 27. iOS 응용 프로그램에서 쿠키를 유지 하시겠습니까?
- 28. iOS 응용 프로그램에서 HTTPS 웹 서비스 호출
- 29. Flex에서 만든 iOS 응용 프로그램에서 영화 재생
- 30. WPF 응용 프로그램에서 여러 스레드 간의 통신
일부 도면 코드는 멀티 코어 CPU에서 실행될 때 CATiledLayer와 같이 멀티 스레드입니다. –