2009-08-05 6 views
1

응용 프로그램이 종료되기 전에 일부 데이터를 게시하려고합니다. Iam은 CFStreamCreatePairWithSocketToCFHost를 사용하여 소켓을 genrateing하고 나중에 읽기 및 쓰기 콜백을 사용합니다.callbacks inside applicationwillterminate

하지만 데이터를 게시 할 수 없습니다. 모든 기능을 수행하지만 콜백을 시작하지는 않습니다. 그것은 누구에게나 의미가 있습니까? 이 작업을 수행 할 여지가 있습니까?

감사합니다, Sowri

답변

0

내 창자 느낌 applicationWillTerminate 방법이 완료된 후, 그냥 말할 것도없고, 다른 실행 루프를 실행할 수있는 기회를 제공하지 않고, 전체 응용 프로그램을 중지 콜백을 할 것입니다. 그래서 내 추측은 applicationWillTerminate에서 비동기 메서드를 호출해도 시작되지 않는다는 것입니다. 그 시점에서 네트워킹을 시작하기에는 너무 늦었습니다.

+0

감사합니다. 전화를 끊어서 NSURL 연결을 사용하여 게시했습니다. – Sowri

2

예, applicationWillTerminate가 호출 된 후 실행 루프의 반복이 더 이상 없습니다. CFSocket과 CFStream은 실행 루프를 사용하여 소켓을 관리하고 콜백을 통해 데이터를 제공하기 때문에 작동하지 않습니다. 또한이 단계에서 응용 프로그램이 특정 작업을 수행하지 못하도록 제한 할 수 있으며 응용 프로그램이 종료되지 않으면 운영 체제가 응용 프로그램을 종료 함을 유의해야합니다. 데이터베이스에 작은 로그를 작성한 다음 응용 프로그램을 다시 시작할 때 해당 정보를 다시 게시하는 것이 더 좋습니다.

+0

덕분에 도움이되었습니다. – Sowri

0

applicationWillTerminate는 : 콜백 종료됩니다 응용 프로그램, 하지 때문에 이름에서 알 수 있듯이 중요한 어떤 종류의 조작을 할 수있는 장소와 코드가 일을 마무리하는 것이 기다리지 않습니다.

게시하려고하는 것은 무엇입니까? 왜 이렇게하고 싶은지 설명하면 더 나은 솔루션을 제공 할 수 있습니다.

+0

덕분에 응용 프로그램이 종료 될 때 데이터를 게시하여 서버에서 사용자 작업을 기록하려고했습니다. NSURL Connection으로 할 수 있다고 생각합니다. – Sowri