2009-08-05 8 views
1

Ich versuche, einige Daten zu veröffentlichen, bevor meine Anwendung beendet wird. Ich mache dies durch Generieren von Sockets mit CFStreamCreatePairWithSocketToCFHost und später habe ich die Callbacks zum Lesen und Schreiben.Callbacks innerhalb der AnwendungWirdterminate

Ich kann jedoch keine Daten posten. Es durchläuft alle Funktionen, geht aber nicht in Rückrufe ein. Macht das irgendjemanden Sinn? Gibt es das überhaupt, um das funktionieren zu lassen?

Danke, Sowri

Antwort

0

Mein Bauchgefühl ist, dass nach dem applicationWillTerminate Verfahren durchgeführt wird, wird es nur die ganze App zu stoppen, ohne eine andere Laufschleife, um die Chance zu geben, allein tun Rückrufe ausführen lassen. Meine Vermutung ist, dass der Aufruf von asynchronen Methoden in der ApplicationWillTerminate nicht startet. Du bist gerade zu spät, um mit dem Networking zu beginnen.

+0

Danke, ich habe die Rückrufe los und verwendet NSURL Verbindung zum Posten – Sowri

2

Ja, nachdem ApplicationWillTerminate aufgerufen wurde, gibt es keine weiteren Iterationen der Laufschleife. Da CFSocket und CFStream beide die Run-Schleife verwenden, um die Sockets zu verwalten und Daten über den Callback bereitzustellen, wird dies nicht funktionieren. Außerdem ist es sehr wichtig zu beachten, dass die Anwendung in diesem Stadium möglicherweise bestimmte Dinge nicht tun kann und dass, wenn Ihre Anwendung nicht beendet wird, das Betriebssystem die Anwendung beendet. Es kann eine bessere Idee sein, ein kleines Protokoll in eine Datenbank zu schreiben und diese Informationen dann beim nächsten Start der Anwendung zu speichern.

+0

Danke, das hilft – Sowri

0

Die applicationWillTerminate: Rückruf ist nicht der Ort, jede Art von kritischem Vorgang zu tun, weil, wie der Name schon sagt, Ihre Anwendung wird beenden und es wird nicht warten, für Ihren Code, etwas zu tun zu beenden.

Was möchten Sie veröffentlichen? Wenn Sie erklären, warum Sie dies tun möchten, können wir Ihnen möglicherweise eine bessere Lösung anbieten.

+0

danke, ich habe nur versucht, die Benutzeraktionen auf dem Server zu protokollieren, indem Sie diese Daten, wenn die Anwendung beendet. Ich denke ich kann es einfach mit NSURL Connection machen. – Sowri