2012-11-21 4 views
0

기술 노트 TN2277에서 앱이 백그라운드로 이동할 때 모든 종류의 네트워크 소켓을 닫는 것이 중요하다고 읽었습니다. 이것은 GKSession을 포함 할 가능성이 가장 큽니다.GKSession 호출이 주 스레드를 차단합니까?

그들은 백그라운드로 갈 때 만료 처리기가 필요하며 다른 피어에게 "안녕"이라고 말하면 네트워킹 코드를 비동기 적으로 호출해야한다고 말합니다.

그래서 GKSession sendData 메소드가 비동기식입니까, 아니면 차단하고 있습니까?

답변

1

iOS 6의 특정 상황에서 메인 스레드를 차단하는 GKSession에 문제가있는 것 같습니다. 지금은 엔터프라이즈 GKSession 네트워킹 앱에 이러한 차단 문제가 발생하기 때문에 iPads 풀을 iOS 6으로 이동할 수 없습니다 (단, iOS 5 이전 버전이 아님). 예를 들어 서버 iPad에서 동시에 4 개 이상의 iPad에 파일을 보내면 차단 동작이 발생합니다. iOS 5에서는 문제없이 최대 15 명의 연결된 클라이언트에게 파일을 보낼 수 있습니다.

초기 테스트에서는 iOS 5 장치가 iOS 5 장치 다음에 연결된 경우 iOS 5 및 6 장치를 혼합하여 사용하면 iOS 6 장치가 주 스레드를 잠그는 것이 나타났습니다.

나는 아이폰 OS 개발자 센터에 사고 보고서를 게시하지만 다시 아무것도 듣지 않은

...

UPDATE 11월 30일 : 지금 애플에서 다시 들었 그들은 아이폰 OS에 GameKit의 버그로 치료된다 6 조사하고 있습니다. iOS 6 (iOS 5 이하는 제외)에서도 GKSession 차단 문제가 발생하면 버그로 신고해야합니다.

관련 문제