Продажа объекта
Для предоставления доступа к объекту доступным для других приложений установите его как корневой объект NSConnection
возразите и зарегистрируйте соединение по имени в сети. Этот фрагмент кода продает serverObject
, который, как предполагается, имеет допустимое значение объекта, который будет продаваться:
/* Assume serverObject has a valid value of an object to be vended. */ |
NSConnection *theConnection; |
theConnection = [NSConnection defaultConnection]; |
[theConnection setRootObject:serverObject]; |
if ([theConnection registerName:@"server"] == NO) { |
/* Handle error. */ |
} |
Этот фрагмент использует в своих интересах факт, что каждый поток имеет значение по умолчанию NSConnection
объект, который может быть установлен как сервер. NSConnection
объект может продать только один объект, таким образом, значение по умолчанию NSConnection
объект не мог бы быть доступным. В этом случае можно создать дополнительный NSConnection
объекты продать объекты с обычным alloc
и init
методы.
Для распространения соединения с другими потоками и задачами этот фрагмент регистрирует theConnection под именем “server
”. Это вызывает значение по умолчанию соединения, получают порт, который будет зарегистрирован в сервере имен порта системы по умолчанию, как возвращено NSPortNameServer
метод класса systemDefaultPortNameServer
.
NSConnection
объект установил этот путь, вызывается именованным соединением. Именованное соединение редко имеет канал любому другому NSConnection
объект (на рисунке 1 и рисунке 2 именованное NSConnection
объекты являются маркированными кругами s
). Когда клиент связывается с сервером, новой парой NSConnection
объекты создаются в частности для обработки коммуникации между двумя.
NSConnection
объект добавляет себя к току NSRunLoop
экземпляр, когда это инициализируется. В основном потоке приложения на основе Набора Приложения уже работает цикл выполнения, таким образом, нет ничего больше, чтобы сделать для продажи объекта. Во вторичном потоке или приложении, не использующем NSApplication
объект, необходимо запустить цикл выполнения явно для получения запросов входящего соединения и сообщений. Это обычно столь же просто как получение текущего потока NSRunLoop
экземпляр и отправка его a run
сообщение:
[[NSRunLoop currentRunLoop] run]; |
Посмотрите Конфигурирование Соединения для получения дополнительной информации об установке NSConnection
объекты для обрабатывания запросов.