Продажа объекта

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