NSNotificationCenter: объекты получают уведомления на том же потоке, они отправляются?

Посмотрите на

, если вы чувствуете себя комфортно и ваша среда позволяет вам продлевать занятия.

Он в основном расширяет класс SoapClient, заменяет транспорт HTTP на curl, который может обрабатывать тайм-ауты:

class SoapClientTimeout extends SoapClient
{
    private $timeout;

    public function __setTimeout($timeout)
    {
        if (!is_int($timeout) && !is_null($timeout))
        {
            throw new Exception("Invalid timeout value");
        }

        $this->timeout = $timeout;
    }

    public function __doRequest($request, $location, $action, $version, $one_way = FALSE)
    {
        if (!$this->timeout)
        {
            // Call via parent because we require no timeout
            $response = parent::__doRequest($request, $location, $action, $version, $one_way);
        }
        else
        {
            // Call via Curl and use the timeout
            $curl = curl_init($location);

            curl_setopt($curl, CURLOPT_VERBOSE, FALSE);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($curl, CURLOPT_POST, TRUE);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
            curl_setopt($curl, CURLOPT_HEADER, FALSE);
            curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
            curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout);

            $response = curl_exec($curl);

            if (curl_errno($curl))
            {
                throw new Exception(curl_error($curl));
            }

            curl_close($curl);
        }

        // Return?
        if (!$one_way)
        {
            return ($response);
        }
    }
}

18
задан Corey Floyd 17 June 2009 в 00:47
поделиться

2 ответа

Короткий ответ - да ... «Обычные центры уведомлений доставляют уведомления в потоке, в котором оно было опубликовано. Распределенные центры уведомлений доставляют уведомления в основном потоке».

Однако, У Apple есть документы по этому поводу, которые могут оказаться полезными, и из которых была взята приведенная выше цитата:

Темы программирования уведомлений: Доставка уведомлений в определенные потоки

36
ответ дан 30 November 2019 в 06:29
поделиться

Просто позаботился об этом сам, постыдно:

Из ссылки на класс: NSNotificationCenter отправляет все уведомления синхронно

Кроме того, если вы предпочитаете, вы можете использовать NSNotificationQueue для асинхронной публикации уведомлений

13
ответ дан 30 November 2019 в 06:29
поделиться