gpt4 book ai didi

objective-c - NSNotificationCenter 作用域定义

转载 作者:搜寻专家 更新时间:2023-10-30 20:22:21 28 4
gpt4 key购买 nike

所以我是 NSNotifications 的新手,我想知道范围是什么。 IE。如果我有一个应用程序委托(delegate)类,并且它是通知的接收者:

-(id)init
{
[ super init];
if (!self) return nil;

// Add to our notification
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveUpdateRequest:)
name:@"RequestStatusUpdate"
object:nil];
return self;
}

并在接收时运行此方法:

- (void) receiveUpdateRequest:(NSNotification *) notification
{
// Check the Notification Name
if ([[notification name] isEqualToString:@"RequestStatusUpdate"]){
NSLog (@"Recieved Update Status!");
}
else {
NSLog(@"Recieved Notification: %@",[notification name]);
}

}

我可以这样发布通知吗:

[[NSNotificationCenter defaultCenter] postNotificationName:@"RequestStatusUpdate" object:self];

来 self 应用程序中任意位置的另一个对象实例?

甚至例如通过加载 NIB 实例化的对象:

summaryWindow   = [[SummaryWindowController alloc] initWithWindowNibName:@"SummaryWindow" owner:globalStatusController];

我是否必须在我的 summaryWindow 类中配置任何其他内容才能调用 postNotificationName 方法。

或者换一种说法是 [NSNotificationCenter defaultCenter] 全局适用于我的应用程序中所有对象的所有实例,我假设这就是它应该如何工作但是目前当我通过我的 SummaryWindow 中的 IBAction 调用此方法时,通知好像没有收到。

我已经测试了 [NSThread currentThread] 和默认的通知中心,看起来我确实在线程和同一个通知中心(我认为它总是全局的)中。我只是在研究线程问题,因为它出现在其他几个线程上。

2011-08-22 20:57:11.452 AppName[23102:1307] Using Default Notification Center: <CFNotificationCenter 0x10012c900 [0x7fff7d302ea0]>
2011-08-22 20:57:20.366 AppName[23102:1307] Using Default Notification Center: <CFNotificationCenter 0x10012c900 [0x7fff7d302ea0]>

最佳答案

哇,太差劲了,我刚找到 [[NSNotificationCenter defaultCenter] removeObserver:self];在一些较早的代码中。我在 dealloc 中有它,但在我正在处理的另一个 NSTask 方法中,有些人是如何设法错过它的。

关于objective-c - NSNotificationCenter 作用域定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7153281/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com