При создании локальных портов с CFMessagePortCreateLocal вы можете указать контекстную информацию (void *). Это полезно для указания экземпляра класса Objective-C. С CFMessagePortCreateRemote вы не можете указывать контекстную информацию. Если вы хотите отслеживать, когда удаленный порт недействителен с помощью обратного вызова, указанного в CFMessagePortSetInvalidationCallBack, у вас нет этой информации, доступной в обратном вызове. Существует ли работа, помимо использования статической переменной?CFMessagePortInvalidationCallBack не имеет контекстной информации для удаленных портов
У меня может быть неизвестное количество удаленных портов, подключенных к отдельным процессам.
Ваш обратный вызов получает порт 'CFMessagePortRef' для порта. Вам необходимо создать структуру данных для отслеживания удаленных портов сообщений, которые вы создаете, и сопоставить их с другими релевантными данными. В качестве альтернативы, поскольку все объекты «CFType» без сбоев соединяются с «NSObject» и, следовательно, «id», вы можете использовать связанный API объектов (например, «objc_setAssociatedObject()»). –
@KenThomases Пожалуйста, добавьте предложение objc_setAssociatedObject в качестве ответа, и я пометю его как принятый ответ. Кажется, он делает именно то, что я искал. – dbainbridge