草庐IT

nsnotification

全部标签

objective-c - 记录 NSNotifications

我想记录在我的应用程序中共享的单个NSNotificationCenter发布的任何NSNotifications。我已经尝试将NSNotificationCenter子类化,目的是将日志记录代码添加到三个post方法,但它返回CFNotification中心的实例而不是我的子类。肯定有监控NSNotification发布的方法吗?编辑/更新正如下面两个答案正确指出的那样,我可以收听所有通知并将它们记录在处理程序中,但是处理程序接收这些通知的顺序远不能保证与它们​​的发送顺序相同。如果我可以确定处理程序将始终是第一个收到通知的处理程序,这将起作用,但我不能:'观察者接收通知的顺序未定义

ios - NSNotification (itemDidFinishPlaying) 中的观察者随机调用两次

我在视频播放完毕后立即显示文本。我正在使用一种通知技术来实现这一点。唯一的问题是Observer不时被调用两次。它会触发“itemDidFinishPlaying”两次(因此会触发同名方法)。我无法预测什么时候。我不知道为什么。它看起来是随机的(我知道这听起来很奇怪)就像它工作正常一样,假设连续15次,下一次这种行为突然发生。我重建并运行应用程序,这次它连续运行19次,然后两次调用观察者,等等......不可预测。我已经尝试了所有场景来预测错误以修复它。到目前为止这是不可能的。所以我有2个问题。1)为什么它会“随机”发生?2)如何解决这个双重调用问题?此外,以下2个对话也没有帮助:Wh

ios - NSNotification 如何工作

我了解Notification、poster和observer中的内容。但我完全无法理解我们的应用程序或操作系统如何理解并向观察者类发送标志/通知?这背后的机制是什么?非常感谢您的回答和帮助。谢谢身份证。 最佳答案 将通知中心想象成一个字典,其中包含通知名称的键和观察者列表(及其指定的操作方法)的值。发布通知时,将获取并迭代该通知名称的观察者列表。每个观察者都使用通知信息调用其操作方法。此外,在迭代期间,会检查以确定观察者是否对通知对象感兴趣(基于添加观察者时提供的参数)。通知进程在发布通知的线程上执行。不要考虑尝试依赖与添加观察者

objective-c - 使用 NSNotification 将 NSString 变量传递给其他类

我想将一个NSString从一个类传递到另一个类,然后将该NSString添加到我第二个类中的NSMutableArray。我相信我可以为此使用NSNotification,但我不知道如何通过通知传递变量。我的代码是这样的://class1.h#import@interfaceViewController:UIViewController@property(strong,nonatomic)NSString*variableString;@end//class1.m#import"ViewController.h"@interfaceViewController()@end@imple

ios - Swift 3 中的 NSNotifications

新通知目前在Swift3中不起作用吗?我在做:NotificationCenter.default().post(name:DidTouchParticleView,object:self.particleas?AnyObject)在自定义View的touchesBegan()中,如果有的话,我需要将particle对象发送到ViewController。所以我这样做:NotificationCenter.default().addObserver(forName:DidTouchParticleView,object:self,queue:OperationQueue.main(),

ios - 通过 NSNotification 从 UICollectionView 中删除单元格

我有一个简单的基于UICollectionView的应用程序——为简单起见,一个UICollectionView和一个基于NSMutableArray的数据模型。我可以通过didSelectItemAtIndexPath:委托(delegate)方法毫无问题地删除单元格:-(void)collectionView:(UICollectionView*)collectionViewdidSelectItemAtIndexPath:(NSIndexPath*)indexPath{[self.dataremoveObjectAtIndex:[indexPathrow]];[self.coll

ios - Swift 从永远不应该返回 nil 的 NSNotification() 实例化中返回 nil

这发生在Swift1.1中,在下面的代码中,“theNotification”偶尔会返回nil,这会导致NSNotificationCenter.postNotification()崩溃。我不知道为什么,因为它很少见,可能是因为代码在iOS8键盘扩展中,但我不知道为什么这很重要。classfuncsendNotificationValue(name:String,value:Int){letnotificationQ=NSNotificationCenter.defaultCenter()letuserDict=["value":value]lettheNotification=NSN

ios - NSNotification 延迟

如何延迟发布NSNotification。我想到的一个解决方案:-在performSelectorAfterDelay方法中发布通知。有没有更好的解决方案。是NSNotificationQueue可以帮助我实现这一目标吗? 最佳答案 利用GCD的dispatch_after()方法。在Objective-C中,这看起来像:dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(5.0*NSEC_PER_SEC)),dispatch_get_main_queue(),^{[[N

ios - 我是否过度使用 NSNotifications

我最近发现在我的iOS应用程序中制作非常自定义的布局时使用NSNotifications的好处。我现在使用它们来发送数据而不是使用委托(delegate)。例如,我在一个Controller中有一个UIScrollView,它会改变另一个viewcontroller中图片的alpha,所以我只是在ScrollView滚动时发送通知,例如funcscrollViewDidScroll(scrollView:UIScrollView){letuserInfo=["ScrollView":scrollView]NSNotificationCenter.defaultCenter().post

ios - NSNotification 被解雇了不止一次?

我正在为测试项目创建示例播放器。我创建了一个NSNotification来调用一个函数来播放数组中的下一个音轨。问题是通知连续调用此函数大约8次?我不知道为什么会这样。这是我的代码,感谢您的帮助!letplayer=AVPlayer()varurlPlayerItems=[String]()varcurrentTrack:Int=0overridefuncviewWillAppear(_animated:Bool){super.viewWillAppear(animated)//CheckstoseeifplayerreachedendNotificationCenter.defaul