Цель C - Как получить доступ к внутренним объектам NSNotification? - PullRequest
0 голосов
/ 03 октября 2010

Я хочу получить доступ к внутреннему объекту из уведомления.Мне нужно получить ключ AVSystemController_AudioVolumeChangeReasonNotificationParameter.

Если я вызываю [объект отправителя], я получаю этот вывод.Но если я позвоню

[[sender object] userInfo]

, я получу только «нераспознанный селектор, отправленный экземпляру».Почему это так?

Вывод NSLog (@ "% @", [объект отправителя]):

NSConcreteNotification 0x157a30 {name = AVSystemController_SystemVolumeDidChangeNotification; object = AVSystemController: 0x1616c0; userInfo = {
    "AVSystemController_AudioCategoryNotificationParameter" = "Audio/Video";
    "AVSystemController_AudioVolumeChangeReasonNotificationParameter" = ExplicitVolumeChange;
    "AVSystemController_AudioVolumeNotificationParameter" = 1;
}}

Если нет доступа к userInfo, могу ли я получить вывод NSLogсделать поиск строки?

1 Ответ

1 голос
/ 03 октября 2010

Ваш вывод из NSLog на самом деле выглядит как вывод

NSLog(@"%@", sender);

Вы уверены, что звонили [объект отправителя]?

объект часто является объектом, который разместил уведомление. В вашем случае скорее всего объект с классом AVSystemController

Информация о пользователе может быть доступна с помощью

[sender userInfo]

Так что, пожалуйста, попробуйте

NSLog(@"%@", [sender userInfo]);

Кстати: если вы попытаетесь сопоставить функцию кнопок громкости с какой-либо другой функцией (например, «Сфотографировать»), ваше приложение не будет одобрено. На всякий случай.

...