Ваш вопрос немного неясен. Если вы имеете в виду «сколько времени требуется, чтобы позвонить [NSNotificationCenter defaultCenter]
?», Не беспокойтесь об этом. Это тривиально. Обычно люди выгружают [NSNotificationCenter defaultCenter]
в переменную, чтобы сохранить ввод. Обычно я вызываю переменную nc
, потому что это так долго. Остальная часть этого ответа связана с производительностью NSNotification
, которая может и не быть тем, о чем вы просили.
Какао обычно не дает обещаний об этих вещах. Вы не можете опираться на детали реализации, и, к сожалению, CFNotificationCenter
не является частью исходной версии Core Foundation, поэтому вы не можете всплыть и посмотреть, как это реализовано в настоящее время.
Но опыт предполагает (исходя из настройки производительности, которую я должен был сделать несколько лет назад), что он реализован как массив наблюдений. Таким образом, он хранит наблюдателя, селектор, имя и объект, что требует около 4x (pointersize) памяти плюс, вероятно, служебные данные структуры ObjC. Так что, возможно, 20 с лишним байтов или тому подобное на 64-битной платформе.
addObserver
и removeObserver
были примерно эквивалентна стоимости добавления или удаления записи в качестве NSMutableArray
(в частности, removeObserver
представляет собой О (п) на общее количество наблюдений, зарегистрированных в центре). Проводка уведомления - O (n) от общего числа наблюдений, зарегистрированных в центре. (Опять же, это основано на обратном проектировании, оно может меняться со временем, но я серьезно сомневаюсь в этом. Я уверен, что это очень стабильный код.)
Это означает, что NSNotification
не очень хорошо масштабируется до тысяч наблюдения. Это не означает, что вы должны «избегать NSNotification
по соображениям производительности». (Я ненавижу, когда люди говорят такие вещи, даже не проверяя их для своей ситуации.) Это просто означает, что вам нужно быть вдумчивым, прежде чем создавать сотни или тысячи уведомлений в системе. Для этого специально разработан KVO.
Для вашего конкретного примера это именно то, для чего предназначен NSNotification
, так что это то, что вы должны использовать.
Вы хотите знать, сколько памяти использует ваше приложение, когда вы добавляете наблюдателей в Центр уведомлений? –
Да. Если Центр уведомлений будет использовать много моего оборудования – Gian
Я уверен, что потребление памяти и процессорного времени будет намного меньше, чем при загрузке изображения из ресурсов. Это не то, о чем вам следует беспокоиться. – medvedNick