我已经向 UIApplication 添加了一个类别,我想让它监听通知。
如果是我的课,我可以在 init/dealloc 中做到这一点。但作为内置类的一个类别,最好的方法是什么?
我已经向 UIApplication 添加了一个类别,我想让它监听通知。
如果是我的课,我可以在 init/dealloc 中做到这一点。但作为内置类的一个类别,最好的方法是什么?
您可以从应用程序中的任何位置访问共享的 UIApplication ,[UIApplication sharedApplication]
因此如果您想让它侦听通知,您可以在(例如)application:didFinishLaunchingWithOptions:
应用程序委托的方法中以通常的方式进行操作:
[[NSNotificationCenter defaultCenter] addObserver:[UIApplication sharedApplication] selector:@selector(yourCategoryMethod:) name:@"WhateverNotificationName" object:WhateverObject];
(您也可以使用作为参数传递的应用程序,application:didFinishLaunchingWithOptions:
而不是在[UIApplication sharedApplication]
此处进行通知设置。这两个对象肯定是相同的。)
第 1 步:创建一个方法来处理通知事件
-(void)myObserver
{
// some action here
}
第 2 步:在您的 viewDidLoad 方法中创建一个观察者并将其注册到您的 ViewController 类以获取某些操作的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myObserver) name:@"YourObserverKey" object:nil];
第 3 步:发布/触发通知,以便所有的Listners 都能收到通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"YourObserverKey" object:nil];
第 4 步:千万不要错过,在离开 ViewController 时移除您的观察者,否则可能导致应用程序崩溃。通常在 viewDidUnLoad 方法中。
[[NSNotificationCenter defaultCenter] removeObserver:self forKeyPath:@"YourObserverKey"];