Создание NSDistantObject - PullRequest
       28

Создание NSDistantObject

0 голосов
/ 13 апреля 2011

У меня есть два приложения 'A' и 'B', и мне нужно сделать ipc. Процесс «A» запускает процесс «B», если он еще не запущен. В процессе 'A' я создаю NSConnection и registerName:. В процессе 'B' я получаю удаленный объект, вызывая rootProxyForConnectionWithRegisteredName:. И он устанавливает указатель объекта клиента на удаленный объект, так что процесс «А» использует этот объект для вызова методов объекта клиента. Пока процесс 'B' не запустится и не установит соединение, _clientObj будет равен нулю. Я могу получать события, предназначенные для _clientObj.

<code>
@interface Server : NSObject {
    @private
    id _clientObj;
}

Вопрос: Есть ли способ, чтобы я сделал _clientObj как NSDistantObject, и он содержит все сообщения, пока не будет построено _clientObj.

1 Ответ

0 голосов
/ 04 июня 2011

Запрашиваемая вами функциональность недоступна сразу после установки, но вы можете создать подкласс NSDistantObject, который будет перехватывать входящие вызовы методов и помещать их в очередь до тех пор, пока соединение не станет действительным. Как только соединение становится действительным, оно может затем снять и переслать все вызовы хранимых методов. Любые дальнейшие вызовы методов будут, так сказать, переадресовываться «вживую».

Посмотрите на этот код как на возможный пример того, как создать подкласс NSDistantObject для выполнения того, что я описал выше.

GTMTransientRootProxy.m , GTMTransientRootProxy.h

Этот код молча проглатывает вызовы методов для NSDistantObject, когда соединение не работает, но вы можете расширить его, чтобы ставить в очередь вызовы методов во время простоя.

...