2015-03-06 3 views
0

При создании локальных портов с CFMessagePortCreateLocal вы можете указать контекстную информацию (void *). Это полезно для указания экземпляра класса Objective-C. С CFMessagePortCreateRemote вы не можете указывать контекстную информацию. Если вы хотите отслеживать, когда удаленный порт недействителен с помощью обратного вызова, указанного в CFMessagePortSetInvalidationCallBack, у вас нет этой информации, доступной в обратном вызове. Существует ли работа, помимо использования статической переменной?CFMessagePortInvalidationCallBack не имеет контекстной информации для удаленных портов

У меня может быть неизвестное количество удаленных портов, подключенных к отдельным процессам.

+0

Ваш обратный вызов получает порт 'CFMessagePortRef' для порта. Вам необходимо создать структуру данных для отслеживания удаленных портов сообщений, которые вы создаете, и сопоставить их с другими релевантными данными. В качестве альтернативы, поскольку все объекты «CFType» без сбоев соединяются с «NSObject» и, следовательно, «id», вы можете использовать связанный API объектов (например, «objc_setAssociatedObject()»). –

+0

@KenThomases Пожалуйста, добавьте предложение objc_setAssociatedObject в качестве ответа, и я пометю его как принятый ответ. Кажется, он делает именно то, что я искал. – dbainbridge

ответ

0

CFType Поскольку все объекты бесплатный мостиком NSObject и, таким образом id, вы можете использовать соответствующий объект API (например objc_setAssociatedObject()).

 Смежные вопросы

  • Нет связанных вопросов^_^