Инкапсуляция сообщения
В этом разделе описываются классы, используемые распределенной системой объектов для инкапсуляции сообщений, переданных по соединению. Если Вы не связываетесь с низкоуровневыми подробными данными распределенных объектов, Вы никогда не должны должны быть использовать эти классы непосредственно. 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:
.