Tag: nsnotificationcenter

iOS从通知中心删除通知

可能重复: iOS应用程序:如何清除通知? 有没有办法如何从通知中心(iOS 5)删除通知,当我点击它,并启动我的应用程序? 非常感谢

向UITableView快速插入行会导致NSInternalInconsistencyException

我有一个UITableView,有时有快速插入新行。 新行的插入由通知观察器处理,通知观察者监听基础数据更改时触发的更新通知。 我使用@synchronized块围绕所有的数据模型的变化和实际的通知邮件本身…希望每个增量数据更改(和行插入)将分开处理。 不过,有时候这还是失败了。 这个例外会告诉我,它预计10行(基于数据模型的计数),它以前有8行,但更新通知只告诉它插入一行(因为这是两个快速发射的通知中的第一个)。 我想了解其他人如何倾向于处理这些types的情况。 其他开发人员如何缓解两个表视图更新操作之间存在multithreading争用条件的问题? 我应该有一个更安全的锁控制更新通知(为什么不是@synchronized做它应该)? 任何意见是极大的赞赏! 谢谢。 一些伪代码: 我的模型类有一个像这样的方法,被其他线程调用来追加新的行到表视图: – (void)addRow:(NSString *)data { @synchronized(self.arrayOfData) { NSInteger nextIndex = self.arrayData.count; [self.arrayData addObject:data]; [NSNotificationCenter.defaultCenter postNotificationName:kDataUpdatedNotification object:self userInfo:@{@"insert": @[[NSIndexPath indexPathForRow:nextIndex inSection:0]]}]; } } 我的控制器类有这样的方法来接受kDataUpdatedNotification通知,并实际执行行插入: – (void)onDataUpdatedNotification:(NSNotification *)notification { NSDictionary *changes = notification.userInfo; [self.tableView insertRowsAtIndexPaths:changes[@"insert"] withRowAnimation:UITableViewRowAnimationBottom]; }

我可以观看另一个class的NSNotification吗?

我试图让我的头在NSNotificationCenter。 如果我在我的App Delegate中有这样的东西: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(something:) name:@"something" object:nil]; —– -(void)something:(NSNotification *) notification { // do something } 我可以以某种方式在另一个视图控制器中看这个吗 在我的情况下,我想用一个表格在视图控制器中观看它,然后在收到通知时重新加载表格。 这可能吗?

在第一个视图控制器中添加'addObserver'(NSNotificationCenter),在第二个

我看到了一些关于在同一个类中添加观察者和句柄的例子,但是我想知道的是,如果可以在第一个视图控制器中添加观察者并在第二个视图控制器中处理它, 我想不断地从第一个视图控制器发送距离,并在第二个处理它。 第二个视图控制器添加为子视图: addSubview , addChildViewController 。 这是像在android广播。

NS观察员通知的通知顺序

如果我有几个class级观察特定的NSNotification,通知发布时通知观察员的顺序是什么?

如何检索所有NSNotificationCenter观察员?

我想为给定的通知名称检索观察者列表(对象和select器)。 我知道这没有官方的API。 我也知道我可以inheritanceNSNotificationCenter来完成这个任务。 但有时候这不是一个可行的select,因为NSNotificationCenter的使用遍布整个代码甚至是二进制框架。 所以我正在寻找一个非官方的/私人的方式来做到这一点。 (因为只是debugging,所以没关系)

NSNotification被UITabBarController多次调用

我有一个UITabBarController ,它有4个选项卡。 每个选项卡都是一个单独的UIViewController 。 我有4个VC中的每一个使用NSNotification来对某个对象进行操作。 4个VC都以相同的方式响应通知,因为它是每个页面上的一个类似的对象。 当这个对象被按下时,它将呈现一个视图到当前的视图控制器。 问题是,如果我移动到其他3个选项卡中的任何一个,现在这个视图也在他们的VC上。 这是因为当任何VC被按下时,所有4个选项卡都会响应通知。 我需要它只响应用户当前所在的VC,而不是标签栏中的其他任何人。 有没有办法让这个工作正常? 也许是一个阈值,您可以设置通知调用后可以执行select器的次数? 这样我可以将它设置为1,并且在任何给定的时间,如果该通知被调用,select器只能被称为1次。 我使用的对象实现types要求使用NSNotificatio n,所以无法改变我如何交互。 编辑: 这个viewDidLoad方法是在我的标签栏中的4个VC的顶级VC。 他们四个都是直接使用或inheritance。 – (void) viewDidLoad { … [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didSelectItemFromCollectionView:) name:@"didSelectItemFromCollectionView" object:nil]; } 行动处理程序: – (void) didSelectItemFromCollectionView:(NSNotification *)notification { NSDictionary *cellData = [notification object]; if (cellData) { NewVC *pushToVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PushToVC"]; [self.navigationController pushViewController:pushToVC animated:YES]; } } 4个VC中的每一个都是一个UITableViewController并且有一个可以被按下的对象。 […]

NSUserDefaultsDidChangeNotification:什么是密钥的名称,改变?

当UserDefaults中的某个值发生更改时,此代码将调用方法“defaultsChanged” NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:self selector:@selector(defaultsChanged:) name:NSUserDefaultsDidChangeNotification object:nil]; 这个代码会给我改变的价值 – (void)defaultsChanged:(NSNotification *)notification { // Get the user defaults NSUserDefaults *defaults = (NSUserDefaults *)[notification object]; // Do something with it NSLog(@"%@", [defaults objectForKey:@"nameOfThingIAmInterestedIn"]); } 但我怎么能得到的密钥的名称,改变?

删除iOS 5 ARC中的NSNotificationCenter观察者

我有一个iOS 5基于ARC的项目,并且在我应该删除在UIViewController注册的NSNotificationCenter观察值的观察者方面遇到困难。 SO上的类似post曾经说过这应该在-dealloc方法中完成。 尽pipe这个方法在ARC项目中不是必需的,但我已经用下面的代码添加了它: – (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } 作为一个testing,我打开UIViewController (在UINavigationController ),做一些触发通知的事情,然后点击Backbutton将其popup堆栈。 然后,我重新打开UIViewController ,并做了更多的事情来触发通知,但注意到每个callback都被调用了两次 – 这表明以前的通知还没有被注销。 重复此过程只会导致每个callback被调用的次数超过了,所以它们似乎永远不会被注销。 任何帮助,将不胜感激!

暂停应用程序启动/退出spritekit游戏.. iOS8

我已经阅读了关于这个主题的所有内容,但仍然无法解决我的问题。 我已经尝试在appdelegate的每个区域暂停我的游戏 func applicationWillResignActive(application: UIApplication!) { NSNotificationCenter.defaultCenter().postNotificationName("pauseGameScene", object: self) } func applicationDidEnterBackground(application: UIApplication!) { NSNotificationCenter.defaultCenter().postNotificationName("pauseGameScene", object: self) } func applicationWillEnterForeground(application: UIApplication!) { NSNotificationCenter.defaultCenter().postNotificationName("pauseGameScene", object: self) } func applicationDidBecomeActive(application: UIApplication!) { NSNotificationCenter.defaultCenter().postNotificationName("pauseGameScene", object: self) } 在我的控制器中: override func viewDidLoad() { NSNotificationCenter.defaultCenter().addObserver(self, selector: "pauseGame:", name: "pauseGameScene", object: nil) } func pauseGame(){ self.skView.paused = true self.skView.scene!.paused = true […]