5

例如,当内存不足时,系统会发送UIApplicationDidReceiveMemoryWarningNotification通知。这就是苹果当时在其文档中所说的全部内容。但是这个通知是从哪里来的,它是发送到哪个方法的呢?或者我在哪里以及如何注册我收到的通知?

4

4 回答 4

18

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

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

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

- (void) handleMemoryWarning:(NSNotification *)notification
{
}
于 2009-04-11T18:36:41.967 回答
5

使用应用程序委托和实现可选方法要简单得多

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

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

于 2009-04-11T18:44:44.820 回答
4

它被发送到通知中心,所有通知都集中在这里。想要获得有关此通知的通知的对象通过告诉它想要获得通知的通知以及在引发通知时应该调用哪个方法来将自己注册到通知中心。

有关更多信息,您可以查看Cocoa和NSNotification 类参考的通知编程主题

于 2009-04-11T18:28:30.037 回答
0

请注意,您的选择器需要将通知作为参数。

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

我只是被这个咬了。

于 2010-10-22T21:11:20.807 回答