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

Tha*_*nks 5 cocoa-touch nsnotifications ios

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

m4r*_*rkk 17

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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMemoryWarning:) name: UIApplicationDidReceiveMemoryWarningNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

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

- (void) handleMemoryWarning:(NSNotification *)notification
{
}
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记在该类的dealloc中调用removeObserver. (4认同)

mou*_*iel 5

它被发送到通知中心,所有通知都集中在通知中心.想要获得有关此通知的通知的对象通过告知要通知哪个通知以及在发出通知时应该调用哪个方法来向通知中心注册.

有关更多信息,您可以查看CocoaNSNotification类引用的通知编程主题.


Jim*_*Jim 5

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

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)

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