У меня есть NSObject
, который прослушивает ~ 30 строковых сигналов. Я хочу опубликовать любое количество строк для этого объекта. Но сначала я хочу проверить, проверяет ли она текущую строку.Тест, если NSObject наблюдает строку
Документация для [NSNotificationCenter][1]
не предполагает, что это возможно. Есть только add/remove remove observer и методы уведомления.
Документация для KVO заставляет меня думать, что это возможно, используя метод [[NSNotificationCenter defaultCenter] observationInfo]
. Я не знаю, как использовать возвращаемый void*
. В документации говорится, возвращаемое значение:
указатель, который идентифицирует информацию о всех наблюдателей, которые зарегистрированных в приемнике, параметры, которые были использованы при регистрации времени, и так далее.
Я особенно ценю «и так далее». Это была самая полезная часть ... вздох.
Учитывая количество сигналов, обрабатываемых объектом, я не хочу вручную проверять каждую строку. Есть ли изящный способ проверить, является ли объект наблюдением за строкой (try/catch не подходит) на уровне NSObject или уровне KVO, который не использует частный API?
Спасибо.
попробуйте/поймите. :) Спасибо за понимание! – stephen
Не знаете, почему попытка/улов будет задействована, честно. Если вы вызываете 'will/didChangeValueForKey', и никто не слушает, это не-op. Аналогично, если вы отправляете уведомление в NSNotificationCenter, и никто его не слушает, ничего не происходит. В обоих случаях не следует исключать никаких исключений. – ipmcc
У меня есть [App] Socket, который специализируется на XMLMessageSocket, который специализируется на TCPSocket. Когда XMLMessageSocket решает, что он получил полное xml-сообщение, он получает имя сигнала и отправляет ему сообщение. Если [App] Socket не отвечает на сообщение, генерируется исключение. – stephen