问题标签 [nsnotification]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - NSNotification Log 语句重复
我正在创建一个应用程序,但我遇到了一些问题,不是致命的错误问题,而是一个烦恼。基本上NSNotification
,在我的视图发布后,我的 s 仍然存在,所以当我恢复视图时,可以说四次,我有“这是你的通知”我重新加载视图的次数。所有其他方法都可以使用NSLog
s“这是一个日志语句”。release
NC 使用后是否必须移除或移除?
objective-c - Objective-c - 返回布尔值的 addObserver 语法
我正在尝试向我的 Xcode 项目添加一个 sdk 调用,在他们的文档中,他们说:
“如果您使用这些 API,您可以成为以下事件的观察者:
NOTIFICATION_COMPLETED True/False - 邮件已成功/失败完成。”
我设法做到了这一点:
或者,我认为这是正确的......我不确定最后的 nil 。
无论如何,我不知道如何格式化我的 _NotificationCompleted 函数......
这就是我写的:
我究竟做错了什么?
cocoa - 在将新对象添加到 NSArrayController 时收到通知
每次将新对象添加到我的数组控制器时,我都想执行一个方法(或选择器)。
我想它可以通过键值观察以某种方式完成,但我不完全知道如何。
有人可以给我示例代码吗?
ios - NSNotification 未发送/接收
我一整天都在试图解决这个问题,我开始变得绝望......所以这是我的问题:
我有一个显示文件列表的表格视图控制器。用户可以将新文件下载到此列表中。我在一个单独的类中异步处理下载。下载新文件后,我想通知表视图控制器,以便它可以更新列表。委托模式在这里并不适合,因为必须通知多个实例,所以我想使用 NSNotificationCenter。
在视图控制器的 viewDidAppear: 方法中,我注册为观察者:
这在发布通知之前肯定会被调用,因为用户必须点击视图控制器上的添加按钮才能开始新的下载。下载完成后,我发布通知(在 DownloadManager 类中):
但是,我在视图控制器中的通知处理程序方法永远不会被调用。我添加了断点,它只是没有被调用。我还尝试将对象设置为零。没有不同。
注册和发布通知都是在主线程上完成的(我认为这并不重要)。视图控制器没有被释放或任何东西。据我所知,我没有打错字。名称字符串是相同的常量。
如果在注册为观察者时将 name 参数设置为 nil,我会收到所有类型的(系统)通知,但不是我自己的。但是,如果我在注册后立即发布测试通知(在 viewDidAppear 中),它会起作用。
我不知道我还应该检查什么......非常感谢任何提示。谢谢!
objective-c - 在 NSCollectionView 中不创建空选择
我已经在可可应用程序中设置了一个NSCollectionView
。我已经对集合视图进行了子类化,以便在它选择/取消选择其中一个视图时NSCollectionViewItem
向我发送自定义。NSNotification
发布此通知时,我注册以在我的控制器对象中接收通知。在这个方法中,我告诉刚刚被选中的视图它被选中并告诉它重绘,这使得它自己着色为灰色。
子类NSCollectionViewItem
:
控制器类(在-(void)awakeFromNib
方法中):
和-(void)selectionChanged:(NSNotification *)notification
方法:
包含此代码的应用程序要求在任何时候集合视图中都没有空选择。这就是我遇到问题的地方。我尝试检查视图的选择何时更改,如果没有选择则重新选择它,并使用NSCollectionView
's手动选择视图
-(void)setSelectionIndexes:(NSIndexSet *)indexes
但是总有一种情况会导致集合视图中出现空选择。
所以我想知道是否有一种更简单的方法可以防止出现空选择NSCollectionView
?我在界面生成器中看不到复选框。
提前致谢!
本
更新
我最终只是继承了我的NSCollectionView
,并覆盖了该- (void)mouseDown:(NSEvent *)theEvent
方法。[super mouseDown:theEvent];
如果单击位于其中一个子视图中,我才发送该方法。代码:
iphone - NSNotificationCenter 发布到 nil -> 崩溃
我的 TableViewCell 注册通知。但是我不能取消注册,因为我不知道什么时候。我试图继承 NSNotificationCenter 但我没有以正确的方式尝试它。
一些想法如何解决这个问题?
iphone - NSNotification 仅 NSLog 有效
在我的 XI 类中发布这样的通知:
在我的课堂上,我是这样收到的:
控制台显示 NSLog 消息,但我的 UITextView 没有隐藏它的键盘。(例如在 viewDidLoad 中 resignFirstResponder/becomeFirstResponder 有效。)
我有什么特别需要做的吗?
ios - 在视图控制器完全初始化之前调用的 NSNotification
嗨,我在 tabview 控制器中有一个 viewcontroller。我决定使用 NSNotification 来标记 tabview 控制器中的视图何时需要更新其数据。以前每个人都有逻辑来决定数据模型的状态并相应地更新。
我的更新代码调用了一些东西,这些东西又调用了委托方法。这些都在不使用通知时工作。
我第一次尝试通知似乎在视图控制器初始化之前调用了选择器(至少在 viewDidload 之前)。除此之外,当通知选择器中的更新运行并且视图控制器没有更新时,委托方法永远不会被调用。似乎视图控制器处于某种未知状态。
我运行了一个测试并将相同的更新代码放在 viewDidLoad 中,并且仅在调用 viewDidLoad 之后才调用通知代码。这行得通。
我的问题是,是否有另一种方法可以防止在 viewDidLoad 之前调用通知选择器方法,或者对象被正确初始化。
我正在使用情节提要,所以我没有对视图的创建等进行编程。
我希望这很清楚 - 发布一大堆代码不会更容易。
iphone - 如何从 NSNotification 对象获取数据?
我正在尝试以新位置作为通知对象发送位置更新。当我这样做时,当我尝试从通知中访问数据时收到“EXC_BAD_ACCESS”错误。如果我执行“po location”,我会看到数据,但我不清楚为什么我无法获取它。设置观察者时,我也尝试将对象参数分配给成员变量,但从未调用 locationUpdate。
这是我的代码(请注意启用了 ARC):
// 位置控制器.h
// 位置控制器.m
// 通知.h
// 通知.m
// ViewController.h
// ViewController.m
objective-c - 如何确定哪个 NSNotification 由于被释放的观察者而崩溃
使用的黄金法则NSNotification
似乎是
“在(或)被释放
removeObserver
之前调用”。observer
object
我正在处理一个未遵循此规则的代码库,但我找不到违规行为。我已经搜索了代码并确保每个addObserver
都有匹配removeObserver
但我仍然看到以下各种崩溃报告:
我对这个崩溃报告的解释[UIApplication _handleApplicationSuspend:eventInfo:]
是发布一个通知,观察者在被删除之前已被释放。
假设这种解释是正确的,我将如何确定发布的是哪个通知?理想情况下,释放的对象类型是什么?