обратные вызовы внутри приложения - PullRequest
1 голос
/ 05 августа 2009

Я пытаюсь опубликовать некоторые данные до того, как моя заявка прекратится. Я делаю это, генерируя сокеты с помощью CFStreamCreatePairWithSocketToCFHost, а позже у меня есть обратные вызовы для чтения и записи.

Но я не могу опубликовать какие-либо данные. Он проходит через все функции, но не входит в обратные вызовы. Это имеет смысл для кого-либо? Есть ли способ заставить это работать?

Спасибо, Sowri

Ответы [ 3 ]

2 голосов
/ 06 августа 2009

Да, после вызова applicationWillTerminate больше нет итераций цикла выполнения. Поскольку CFSocket и CFStream оба используют цикл выполнения для управления сокетами и для предоставления данных посредством обратного вызова, это не будет работать. Кроме того, очень важно отметить, что приложению может быть запрещено выполнять определенные действия на этом этапе и что, если ваше приложение не завершает работу, операционная система завершит работу приложения. Возможно, лучше записать небольшой журнал в базу данных, а затем опубликовать эту информацию при следующем запуске приложения.

0 голосов
/ 06 августа 2009

applicationWillTerminate: callback - это , а не место для выполнения каких-либо критических операций, поскольку, как следует из названия, ваше приложение будет завершаться и не будет ждать, пока ваш код закончить что-то делать.

Что вы пытаетесь опубликовать; если вы объясните, почему вы хотите это сделать, мы сможем предложить лучшее решение.

0 голосов
/ 05 августа 2009

Мне кажется, что после того, как метод applicationWillTerminate будет завершен, он просто остановит все приложение, не давая ни одному другому циклу выполнения возможности выполнить, не говоря уже о выполнении обратных вызовов. Поэтому я предполагаю, что вызов асинхронных методов в applicationWillTerminate даже не начнется. В этот момент вы слишком поздно начинаете работать в сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...