0

我使用 NSNotification 中心来获取当前的 iPhone 音量。例如 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:MPMusicPlayerControllerVolumeDidChangeNotification object:musicPlayer]; ,我没有在我的代码中使用 post Post 通知,但调用了 volumeChanged 方法。那么Post Notification有什么用以及如何使用呢?

4

2 回答 2

1

许多通知是由 iOS 自动生成的,您可以观察它们并做出相应的反应,这正是您通过监听音量更改通知所做的事情。

您也可以自由地将自己的消息发布到通知中心,并且您的代码的其他部分可能会响应它们。

从一个方法中,你可以调用这样的东西:

    [[NSNotificationCenter defaultCenter] postNotificationName:@"com.ryan.cumley.updatedData" object:nil];

您可以随意命名通知,但为了避免冲突,您可以使用 com.xxx.xxx.whatever 表示法。

现在,您的应用程序中当前存在的任何对象(之前也将其自身添加为此通知名称的观察者)将收到此消息并触发它的选择器。

这种设计模式对于在远距离对象之间传递消息特别有用,而无需维护任何类型的相互清晰引用。此外,许多不同的对象可以同时观察,这不仅仅是一个1-1的消息。

您还可以使用该object:参数通过通知传递内容。

于 2013-11-14T13:15:57.687 回答
0

您正在订阅通知(因此您不必发送它)。可能MPMusicPlayerController是发送通知的类/实例。

您可以在此处阅读有关通知工作原理的更多信息。

于 2013-11-14T13:07:49.003 回答