Инкапсуляция сообщения

В этом разделе описываются классы, используемые распределенной системой объектов для инкапсуляции сообщений, переданных по соединению. Если Вы не связываетесь с низкоуровневыми подробными данными распределенных объектов, Вы никогда не должны должны быть использовать эти классы непосредственно. NSInvocation и NSMethodSignature, однако, имейте использование за пределами распределенных объектов, таким образом, можно встретиться с ними в других ситуациях.

NSInvocation

NSInvocation объект является сообщением Objective C, представленным статичным, действие превратилось в объект. NSInvocation объекты привыкли к сообщениям промежуточной буферизации между объектами и между приложениями, прежде всего NSTimer и распределенная система объектов. NSInvocation объект содержит все элементы сообщения Objective C: цель, селектор, параметры и возвращаемое значение. Каждый из этих элементов может быть установлен непосредственно, и возвращаемое значение установлено автоматически, когда диспетчеризируется вызов.

NSInvocation объект может неоднократно диспетчеризироваться различным целям; его параметры могут быть изменены между отгрузкой для переменных результатов; даже его селектор может быть изменен на другого с той же сигнатурой метода (параметр и типы возврата). Это делает его полезным для повторения сообщений со многими параметрами и изменениями; вместо того, чтобы перепечатывать немного отличающееся выражение для каждого сообщения, Вы изменяете NSInvocation возразите по мере необходимости каждый раз прежде, чем диспетчеризировать его новой цели.

Для примеров как NSInvocation используется, посмотрите Используя NSInvocation.

NSMethodSignature

NSMethodSignature записи объекта вводят информацию для параметров и возвращаемого значения метода. Это используется для передачи сообщений, что принимающий объект не отвечает на — прежде всего в случае распределенных объектов. NSMethodSignature объект обычно создается с помощью NSObject methodSignatureForSelector: метод экземпляра. Это тогда используется для создания NSInvocation объект, передающийся как параметр a forwardInvocation: сообщение для пересылки вызова к тому, что другой объект может обработать сообщение. В случае по умолчанию, NSObject вызывает doesNotRecognizeSelector:, который повышает исключение. Для распределенных объектов, NSInvocation объект кодируется с помощью информации в NSMethodSignature возразите и отправленный в реальный объект, представленный получателем сообщения.

NSPortCoder

NSPortCoder конкретный подкласс NSCoder используемый в распределенной системе объектов для передачи объектных прокси (и иногда сами объекты) между NSConnection объекты. NSPortCoder объект всегда создается и используется NSConnection объект; Ваш код никогда не должен должен быть явно создавать или использовать тот.

NSPortMessage

NSPortMessage объект определяет низкий уровень, независимый от операционной системы тип для межприложения (и межпоток) сообщения. NSPortMessage объекты используются прежде всего распределенной системой объектов. Необходимо реализовать межсвязь приложений с помощью распределенных объектов, когда это возможно, и использования NSPortMessage объекты только при необходимости.

NSPortMessage объект имеет три главных части: отправление и получает порты, которые являются NSPorts, соединяющими отправителя сообщения к получателю и компоненты, формирующие организацию сообщения. Компоненты сохранены как NSArray объектный содержащий NSData и NSPort объекты. NSPortMessage sendBeforeDate: сообщение отсылает компоненты через отправить порт; любые ответы на сообщение наступают в получить порт. Посмотрите спецификацию класса NSPort для получения информации об обработке входящих сообщений.

NSPortMessage объект может быть инициализирован с парой NSPort объекты и NSArray экземпляр, содержащий компоненты. NSPortMessage организация объекта может содержать только NSPort объекты или NSData объекты. В распределенной системе объектов обычно кодируются массивы байта/символа NSInvocation объекты, передающиеся от прокси до соответствующего реального объекта.

NSPortMessage объект также поддерживает идентификатор сообщения, который может использоваться для указания класса сообщения, такого как вызов метода Objective C, запрос на установление соединения, ошибка, и т.д. Используйте setMsgid: и msgid методы для доступа к идентификатору.

NSDistantObjectRequest

NSDistantObjectRequest объекты используются Распределенной системой Объектов, чтобы помочь обработать вызовы между различными процессами. Вы никогда не должны создавать NSDistantObjectRequest объекты непосредственно. Если Вы не связываетесь с низкоуровневыми подробными данными Распределенных Объектов, никогда не должно быть потребности получить доступ NSDistantObjectRequest объект. Запрос удаленного объекта на входящее сообщение отправлен делегату соединения, если он реализует connection:handleRequest:.