Получение продаваемого объекта
Приложение получает продаваемый объект путем создания прокси или заместителя, для того объекта в его собственном адресном пространстве. Прокси передает сообщения, отправленные в него через 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.