- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法在 NSNotificationCenter 中执行选择器方法 receiveChatText,我想知道问题是否是因为 NSNotification postNotificationName 位于 AppDelegate.m 中,但 NSNotificationCenter 位于 ViewController.m 中? IE。 postNotificationName 可以知道 NSNotificationCenter 位于另一个 viewController 文件中还是我需要告诉它?
在 viewController.m 中我有
-(id)init
{
self = [super init];
if(self){
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveChatText:)
name:ChatMessageReceived
object:nil];
return self;
}
- (void)receiveChatText:(NSNotification *)note {
NSLog(@"received chat text");
}
在顶级 AppDelegate.m 文件中,我有以下内容:
-(void) didReceiveMessage {
[[NSNotificationCenter defaultCenter] postNotificationName:ChatMessageReceived
object:nil
userInfo:nil];
}
有什么想法可以阻止调用 didReceiveMessage 时执行 receiveChatText 吗?
最佳答案
I can't get the selector method, receiveChatText, …
首先,它是带有冒号的receiveChatText:
。这在 Objective-C 中很重要 —receiveChatText:
和 receiveChatText
不引用相同的方法。
其次,“选择器”的含义并不像您想象的那样。选择器是方法的名称。您传入希望通知中心发送给观察者的消息的选择器。也就是说,您告诉通知中心“当此通知到达时,向我 [ View Controller ] 发送一条 receiveChatText:
消息”。
… in the NSNotificationCenter …
通知中心没有 receiveChatText:
方法。您的观察者 (self
) 会这样做,这就是您希望通知中心将消息发送到的原因。
… to execute and I am wondering if the problem is because the NSNotification postNotificationName is in AppDelegate.m …
AppDelegate.m 中没有这样的东西。
应用程序委托(delegate)发布通知。
… but NSNotificationCenter is in ViewController.m?
ViewController.m 中没有这样的东西。
View Controller 观察通知。
只要 View Controller 在应用程序委托(delegate)发布通知之前将自身添加为观察者,这就会起作用。如果不起作用,则说明其中一个或两个步骤未发生,或者发生的顺序错误。
I.E. can the postNotificationName know that the NSNotificationCenter is in another viewController file or is that something I need to tell it?
通知中心不在这两个文件中。 [NSNotificationCenter defaultCenter]
是一个单例对象,在整个应用程序中所有想要使用它的对象之间共享。这就是您如何使用它来让应用程序委托(delegate)与 View Controller 以及正在观察通知的任何其他对象进行通信。
您正在向默认通知中心发送一条 postNotificationName:object:userInfo:
消息。这与您之前发送 addObserver:selector:name:object:
消息的默认通知中心相同。只要您先开始观察,然后将通知发送到同一个通知中心,通知中心就能将通知发送给您添加的观察者。
Any ideas what could stop receiveChatText
接收聊天文本:
from being executed when didReceiveMessage is called?
didReceiveMessage
未发布通知。假设您在问题中显示的代码是准确的,但事实并非如此。init
而不是 NS/UIViewController 的 initWithNibName:bundle:
。了解不同类的指定初始值设定项是什么;文档通常会说。您可能还希望将聊天文本作为通知的对象传递,或者在其 userInfo
中传递,而不是强制通知的所有观察者从未指定的源检索它。
关于objective-c - NSNotification postNotificationName 在 AppDelegate 中,但 NSNotificationCenter 在 ViewController 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4577255/
现在我正在尝试编写一个函数来在屏幕上出现键盘时向上移动框架。我开始使用 NSNNotificationCenter。我的代码正在运行但不正确。当键盘出现时,我的 formView 向上移动,但是当我开
我想知道是否有可能在应用程序处于暂停状态时从 NSNotificationCenter 运行观察者,如果选择器需要播放音乐。基本上,它在歌曲结束时运行以重置队列。是否可以激活选择器,即使应用程序处于后
应用程序可以在内部使用 NSNotificationCenter让不同的部分相互通信,但是这可以扩展到不同的应用程序可以使用它进行通信吗? 编辑 :很抱歉关于 iOS 与 OSX 的混淆。我只添加了
我正在创建一个必须在 OS X 上作为特权帮助工具运行的服务器。在其中,我尝试使用 NSSocketPort , NSFileHandle ,和NSNotificationCenter在监听套接字上执
我需要在两个不同的控制台应用程序(观察者和客户端)之间进行通信。 在观察者应用程序中,我添加了以下代码: [[NSNotificationCenter defaultCenter] postNotif
我正在使用 NSNotificationCenter 在基于文档的应用程序中发送自定义通知。 基于文档的应用程序可以有许多打开的文档。理想情况下,我希望文档及其子文档仅接收在文档或其子文档中创建的通知
NSNotificationCenter 真的很酷,我们可以用它构建非常可扩展的应用程序。我的问题是:我们是否可以在应用程序中滥用 NSNotificationCenter,即密集使用它,还是它不是一
我一直在研究 NSNotificationCenter,我一直想知道您什么时候会使用自己的自定义通知中心而不是 defaultCenter?这样做的好处是什么? 请原谅我的无知,但似乎仅使用 defa
是平衡“addObserver”的标准: [[NSNotificationCenter defaultCenter] removeObserver:self] 在 viewWillDisappear
我使用以下行添加一个观察者: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFini
当我使用一个时,内存/处理的用途是什么: [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(dismis
我从调用多个NSNotifications的所有观察器选择器到没有一个起作用。是否存在我可能已禁用的XCode / Application设置,可能会导致此行为? 这个问题几乎影响到我已经注册为观察员
基本上,我正在尝试创建一个允许用户通过 Google 或 Facebook 登录的应用程序。我已经成功创建了整个登录过程,但是在显示 Facebook 个人资料图像时遇到了一个小问题。因此,当用户选择
我的应用程序中有一个 UITableview Controller ,一个 View Controller ,我正在尝试使用 NSNotificationCenter 将 NSDictionary 从
我是 iOS 开发的新手。我正在自己学习这个。我现在对什么是通知中心有点困惑。我通过网络搜索并研究了 nsnotification 中心。 我发布这个问题只是为了澄清我对 nsnotification
在我的一个类(class)中,我发布了一条通知: [[NSNotificationCenter defaultCenter] postNotificationName:@"ALERTNOTI" obj
我有一个读取条形码的类,当我读取条形码时,我会向 NSNotificationCenter 发送通知,如下所示。 -(void)barcodeData:(NSString *)barcode type
我使用 NSNotificationcenter 来实现连接变化的事件监听器。当用户连接或断开 WiFi 网络时。当应用程序处于暂停模式时,是否可以将此通知发送到应用程序? 必须可以做到这一点,以 S
我正在使用 NSNotificationCenter,监听器使用以下代码订阅: [[NSNotificationCenter defaultCenter] addObserver:self
在我的应用程序中,我需要检测 ImagePicker 是否准备好拍照。我在这里找到了解决方案:How to know if iPhone camera is ready to take picture
我是一名优秀的程序员,十分优秀!