1

我已经向 UIApplication 添加了一个类别,我想让它监听通知。

如果是我的课,我可以在 init/dealloc 中做到这一点。但作为内置类的一个类别,最好的方法是什么?

4

2 回答 2

1

您可以从应用程序中的任何位置访问共享的 UIApplication ,[UIApplication sharedApplication]因此如果您想让它侦听通知,您可以在(例如)application:didFinishLaunchingWithOptions:应用程序委托的方法中以通常的方式进行操作:

[[NSNotificationCenter defaultCenter] addObserver:[UIApplication sharedApplication] selector:@selector(yourCategoryMethod:) name:@"WhateverNotificationName" object:WhateverObject];

(您也可以使用作为参数传递的应用程序,application:didFinishLaunchingWithOptions:而不是在[UIApplication sharedApplication]此处进行通知设置。这两个对象肯定是相同的。)

于 2013-04-02T17:32:03.163 回答
1

第 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"];
于 2013-04-02T17:48:24.580 回答