Objective C - 如何访问NSNotification内部对象?

时间:2010-10-03 10:46:36

标签: iphone objective-c nsnotifications

我想从通知中访问内部对象。我需要获取密钥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 个答案:

答案 0 :(得分:1)

NSLog的输出实际上看起来像是

的输出
NSLog(@"%@", sender);

您确定要拨打[发件人对象]吗?

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

的对象

可以使用

访问userinfo
[sender userInfo]

所以请尝试

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

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