2012-01-28 5 views
3

NSOperationQueue addOperationWithBlock을 사용하여 초기화 코드를 지연해도 iOS 워치 독에 의해 응용 프로그램이 종료되지 않습니까?NSOperationQueue를 사용하여 iOS 응용 프로그램 초기화 수행

우리가 알고 있듯이 iOS는 응용 프로그램에 didCinishLaunchingWithOptions 또는 applicationDidBecomeActive에 너무 많은 시간을 소비하면 응용 프로그램을 종료시킵니다.

하지만 초기화 할 일이 많습니다. 현재 나는 동기적인 HTTP 요청을하고있다. (동시성이되도록하자 :) 예기치 않은 시간이 걸릴 수있다.

이 문제에 대한 더 좋은 해결책을 제안 해 주시겠습니까?

감사합니다.

편집 : 모든 사람의 동기화 된 HTTP 요청은 질문의 주제가 아닙니다. 제 3 자 SDK가 통합되어 있습니다. 나는 그들 모두 초기화해야하지만 나는 그들이 초기화하는 동안 무엇을하고 있는지 전혀 모른다. 난 그냥 IOS에 의해 살해의 위험을 최소화하기 위해 노력하고 있습니다.

+1

먼저 HTTP 요청을 비동기로 만들 것을 제안합니다. NSOperation에이 코드 (http 코드)를 넣는 것은 괜찮지 만 비동기 http 요청을 만드는 것과 비교할 때 감각이 없습니다. – rpechayr

+0

@rpechayr NSOperationQueue 또는 GCD를 통해 발행 된 동기 가져 오기를 완전히 감지 할 수있는 한 가지 사용 사례) NSURLConnection에'+ sendAsynchronousRequest : queue : completionHandler :'가없는 pre-iOS 5 장치의 경우 네 줄의 폴백으로 명명 된 스레드를 차단하지 않습니다. 따라서 우리는 소수의 사용자에 대한 호환성을 추가하면서 미래의 유지 관리 가능성을 높이기 위해 최소한의 코드를 작성하려고합니다. – Tommy

답변

2

비동기 적으로 웹 요청을 수행하고 필요한 경우 UI가로드되는 동안 진행하십시오. application:didFinishLaunchingWithOptions:에 동기식 웹 요청을 실행하면 안됩니다. 이유가 있습니다.

관련 문제