首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日志记录NSNotifications

日志记录NSNotifications
EN

Stack Overflow用户
提问于 2012-04-17 23:07:48
回答 2查看 1.1K关注 0票数 5

我想记录在我的应用程序中由单个NSNotificationCenter共享帐户发布的任何NSNotifications。我尝试对NSNotificationCenter进行子类化,目的是将日志代码添加到三个post方法中,但它返回的是CFNotification中心的一个实例,而不是我的子类。

当然,有一种方法可以监控NSNotification帖子?

编辑/更新

正如下面两个答案正确指出的那样,我可以侦听所有通知并将它们记录在处理程序中,但处理程序接收这些通知的顺序远不能保证与它们被发送的顺序相同。如果我能确保处理程序总是第一个收到通知的处理程序,这将会起作用,但我不能这样做:来自NSNotification Docs的“观察者接收通知的顺序未定义”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-17 23:51:25

通过使用- addObserver:selector:name:object:并为nameobject传递nil,您将获得有关任何通知的通知。

代码语言:javascript
复制
- (id)init
{
    self = [super init];
    if (self != nil)
    {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(log:) name:nil object:nil];
    }
    return self;
}

- (void)log:(NSNotification *)notification
{
    NSLog(@"%@", notification);
}

编辑:如果您想要获得正在发送的通知的实际顺序,请尝试子类化NSNotificationCenter并覆盖以下方法:

代码语言:javascript
复制
– postNotification:
– postNotificationName:object:
– postNotificationName:object:userInfo:

如果您不能选择子类化,您可以考虑在NSNotificationCenter上定义一个类别,在这个类别中,您可以通过调用超级实现来覆盖这些方法。(你需要在一个类别中使用swizzle方法来调用super )。如果您需要帮助,请告诉我。

票数 9
EN

Stack Overflow用户

发布于 2012-04-17 23:45:02

您应该能够使用and :self selector:@selector(and:) name:nil object:nil,只需将您的日志代码放入and:方法中即可。此观察者应获取您的应用程序发布的所有通知(至少是默认中心发布的所有通知)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10193858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档