我在哪里以及如何注册接收通知的对象?

时间:2009-04-11 18:15:14

标签: ios cocoa-touch nsnotifications

例如,当内存变低时,系统会发送UIApplicationDidReceiveMemoryWarningNotification通知。这就是Apple在其文档中所说的全部内容。但是这个通知来自何处,以及它发送的方法是什么?或者我在哪里以及如何注册我收到通知的内容?

4 个答案:

答案 0 :(得分:17)

在您希望收到通知的类的初始化代码中,进行以下方法调用:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMemoryWarning:) name: UIApplicationDidReceiveMemoryWarningNotification object:nil];

这假设您的类还实现了handleMemoryWarning方法,如下所示:

- (void) handleMemoryWarning:(NSNotification *)notification
{
}

答案 1 :(得分:5)

将其发送到通知中心,其中所有通知都是集中的。希望获得有关此通知的通知的对象通过告知要通知哪个通知以及在发出通知时应该调用哪个方法来向通知中心注册。

有关详细信息,请查看Notification programming topics for CocoaNSNotification class reference

答案 2 :(得分:5)

使用应用程序委托和实现可选方法

更简单
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

大多数常见通知也可以转换为对委托的调用,通常是正式协议中的可选方法。你的代表可以是你喜欢的任何对象。

答案 3 :(得分:0)

警告您的选择器需要将通知作为参数。

如果您使用@selector(handleMemoryWarning)和 - (void)handleMemoryWarning {}之类的东西,对象将不会发送通知,您仍将保留所有内存。

我被这个咬了。