Получение продаваемого объекта

Приложение получает продаваемый объект путем создания прокси или заместителя, для того объекта в его собственном адресном пространстве. Прокси передает сообщения, отправленные в него через NSConnection возразите назад против продаваемого объекта. Приложение может получить прокси для продаваемого объекта двумя способами. Во-первых, rootProxyForConnectionWithRegisteredName:host: метод класса возвращает прокси непосредственно:

id theProxy;
theProxy = [[NSConnection
    rootProxyForConnectionWithRegisteredName:@"server"
    host:nil] retain];
[theProxy setProtocolForProxy:@protocol(ServerProtocol)];

Это сообщение возвращает прокси корневому объекту NSConnection возразите названный «сервером». nil имя хоста указывает, что только локальный узел ищется зарегистрированное NSConnection объект; можно указать определенное имя хоста для ограничения сервера идентифицированным узлом.

Вызов setProtocolForProxy: сообщает распределенной системе объектов набора сообщений, что theProxy отвечает на. Обычно, в первый раз определенный селектор передается прокси NSConnection объект должен подтвердить параметр и типы возврата с реальным объектом. Это может добавить значительные издержки к распределенным сообщениям. Установка протокола записывает эту информацию так, чтобы никакое подтверждение не было необходимо для сообщений в протоколе, и только сообщение, передавая затраты понесено.

Другой способ получить прокси состоит в том, чтобы добраться NSConnection возразите против сервера и затем попросите прокси его корневого объекта:

NSConnection *theConnection;
id theProxy;
 
theConnection = [NSConnection connectionWithRegisteredName:@"server"
                    host:nil];
theProxy = [[theConnection rootProxy] retain];
[theProxy setProtocolForProxy:@protocol(ServerProtocol)];

Если необходимо взаимодействовать с, это полезно NSConnection возразите, а также прокси. (Однако обратите внимание на то, что theConnection не сохраняется в этом примере.)

Именованное NSConnection возразите порождает дочерний элемент NSConnection возразите для обработки коммуникации между двумя приложениями (s порождение s/b и s/a на рисунке 1). Хотя дочерний элемент NSConnection объект не имеет имени, он совместно использует корневой объект и другие атрибуты конфигурации ее родителя, но не делегата. Вы не должны регистрировать дочерний элемент NSConnection объект с именем или изменяют его корневой объект, но можно изменить его другие атрибуты, как описано в Конфигурировании Соединения.

По умолчанию сообщения, отправленные в объект прокси, передаются по соединению синхронно; т.е. отправитель ожидает сообщения, которое будет обработано, и ответ получен от удаленного объекта. Это происходит даже для метода с a void возвратите тип, так как удаленный объект может повысить исключение, пасующееся назад к отправителю. Локальный поток или приложение таким образом блокируют, пока сообщение не завершает выполнение. Для предотвращения этого можно объявить тип метода как oneway void вызвать асинхронную передачу сообщений. Для получения дополнительной информации посмотрите раздел «Remote Messaging» Системы Во время выполнения в Языке программирования Objective C.