在ios中使用Post NSNotification有什么用?

时间:2013-11-14 12:58:46

标签: ios nsnotificationcenter

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

2 个答案:

答案 0 :(得分:1)

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

您也可以将自己的消息发布到通知中心,代码的其他部分也可以回复。

从一个方法中你可以称之为:

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

您可以根据需要为通知命名,但为避免冲突,您可以使用com.xxx.xxx.whatever表示法。

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

此设计模式对于在远程对象之间传递消息特别有用,而无需保持对彼此的任何明确引用。此外,许多不同的对象可以同时观察,它不仅仅是1-1消息。

您还可以使用object:参数传递包含通知的内容。

答案 1 :(得分:0)

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

您可以详细了解通知的工作原理here