0

我想从通知中访问内部对象。我需要获取密钥 AVSystemController_AudioVolumeChangeReasonNotificationParameter。

如果我调用 [sender object] 我会得到这个输出。但如果我打电话

[[sender object] userInfo]

我只收到“发送到实例的无法识别的选择器”。这是为什么?

NSLog(@"%@", [发送者对象]) 输出:

NSConcreteNotification 0x157a30 {name = AVSystemController_SystemVolumeDidChangeNotification; 对象 = AVSystemController: 0x1616c0; 用户信息 = {
    "AVSystemController_AudioCategoryNotificationParameter" = "音频/视频";
    "AVSystemController_AudioVolumeChangeReasonNotificationParameter" = ExplicitVolumeChange;
    "AVSystemController_AudioVolumeNotificationParameter" = 1;
}}

如果无法访问 userInfo,我可以获取 NSLog 的输出来进行字符串搜索吗?

4

1 回答 1

1

您从 NSLog 的输出实际上看起来像

NSLog(@"%@", sender);

你确定你在调用 [sender object] 吗?

对象通常是发布通知的对象。在您的情况下,很可能是具有 AVSystemController 类的对象

用户信息可以通过

[sender userInfo]

所以请尝试

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

顺便说一句:如果您尝试将音量按钮的功能映射到其他功能(例如“拍照”-操作),您的应用将不会被批准。以防万一。

于 2010-10-03T12:52:24.917 回答