问题标签 [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.

0 投票
1 回答
159 浏览

ios - NSNotification Log 语句重复

我正在创建一个应用程序,但我遇到了一些问题,不是致命的错误问题,而是一个烦恼。基本上NSNotification,在我的视图发布后,我的 s 仍然存在,所以当我恢复视图时,可以说四次,我有“这是你的通知”我重新加载视图的次数。所有其他方法都可以使用NSLogs“这是一个日志语句”。releaseNC 使用后是否必须移除或移除?

0 投票
1 回答
402 浏览

objective-c - Objective-c - 返回布尔值的 addObserver 语法

我正在尝试向我的 Xcode 项目添加一个 sdk 调用,在他们的文档中,他们说:

“如果您使用这些 API,您可以成为以下事件的观察者:
NOTIFICATION_COMPLETED True/False - 邮件已成功/失败完成。”

我设法做到了这一点:

或者,我认为这是正确的......我不确定最后的 nil 。

无论如何,我不知道如何格式化我的 _NotificationCompleted 函数......

这就是我写的:

我究竟做错了什么?

0 投票
1 回答
317 浏览

cocoa - 在将新对象添加到 NSArrayController 时收到通知

每次将新对象添加到我的数组控制器时,我都想执行一个方法(或选择器)。

我想它可以通过键值观察以某种方式完成,但我不完全知道如何。

有人可以给我示例代码吗?

0 投票
0 回答
1486 浏览

ios - NSNotification 未发送/接收

我一整天都在试图解决这个问题,我开始变得绝望......所以这是我的问题:

我有一个显示文件列表的表格视图控制器。用户可以将新文件下载到此列表中。我在一个单独的类中异步处理下载。下载新文件后,我想通知表视图控制器,以便它可以更新列表。委托模式在这里并不适合,因为必须通知多个实例,所以我想使用 NSNotificationCenter。

在视图控制器的 viewDidAppear: 方法中,我注册为观察者:

这在发布通知之前肯定会被调用,因为用户必须点击视图控制器上的添加按钮才能开始新的下载。下载完成后,我发布通知(在 DownloadManager 类中):

但是,我在视图控制器中的通知处理程序方法永远不会被调用。我添加了断点,它只是没有被调用。我还尝试将对象设置为零。没有不同。

注册和发布通知都是在主线程上完成的(我认为这并不重要)。视图控制器没有被释放或任何东西。据我所知,我没有打错字。名称字符串是相同的常量。

如果在注册为观察者时将 name 参数设置为 nil,我会收到所有类型的(系统)通知,但不是我自己的。但是,如果我在注册后立即发布测试通知(在 viewDidAppear 中),它会起作用。

我不知道我还应该检查什么......非常感谢任何提示。谢谢!

0 投票
3 回答
963 浏览

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];如果单击位于其中一个子视图中,我才发送该方法。代码:

0 投票
2 回答
187 浏览

iphone - NSNotificationCenter 发布到 nil -> 崩溃

我的 TableViewCell 注册通知。但是我不能取消注册,因为我不知道什么时候。我试图继承 NSNotificationCenter 但我没有以正确的方式尝试它。

一些想法如何解决这个问题?

0 投票
2 回答
604 浏览

iphone - NSNotification 仅 NSLog 有效

在我的 XI 类中发布这样的通知:

在我的课堂上,我是这样收到的:

控制台显示 NSLog 消息,但我的 UITextView 没有隐藏它的键盘。(例如在 viewDidLoad 中 resignFirstResponder/becomeFirstResponder 有效。)

我有什么特别需要做的吗?

0 投票
1 回答
359 浏览

ios - 在视图控制器完全初始化之前调用的 NSNotification

嗨,我在 tabview 控制器中有一个 viewcontroller。我决定使用 NSNotification 来标记 tabview 控制器中的视图何时需要更新其数据。以前每个人都有逻辑来决定数据模型的状态并相应地更新。

我的更新代码调用了一些东西,这些东西又调用了委托方法。这些都在不使用通知时工作。

我第一次尝试通知似乎在视图控制器初始化之前调用了选择器(至少在 viewDidload 之前)。除此之外,当通知选择器中的更新运行并且视图控制器没有更新时,委托方法永远不会被调用。似乎视图控制器处于某种未知状态。

我运行了一个测试并将相同的更新代码放在 viewDidLoad 中,并且仅在调用 viewDidLoad 之后才调用通知代码。这行得通。

我的问题是,是否有另一种方法可以防止在 viewDidLoad 之前调用通知选择器方法,或者对象被正确初始化。

我正在使用情节提要,所以我没有对视图的创建等进行编程。

我希望这很清楚 - 发布一大堆代码不会更容易。

0 投票
2 回答
2608 浏览

iphone - 如何从 NSNotification 对象获取数据?

我正在尝试以新位置作为通知对象发送位置更新。当我这样做时,当我尝试从通知中访问数据时收到“EXC_BAD_ACCESS”错误。如果我执行“po location”,我会看到数据,但我不清楚为什么我无法获取它。设置观察者时,我也尝试将对象参数分配给成员变量,但从未调用 locationUpdate。

这是我的代码(请注意启用了 ARC):

// 位置控制器.h

// 位置控制器.m

// 通知.h

// 通知.m

// ViewController.h

// ViewController.m

0 投票
2 回答
5287 浏览

objective-c - 如何确定哪个 NSNotification 由于被释放的观察者而崩溃

使用的黄金法则NSNotification似乎是

“在(或)被释放removeObserver之前调用”。observerobject

我正在处理一个未遵循此规则的代码库,但我找不到违规行为。我已经搜索了代码并确保每个addObserver都有匹配removeObserver但我仍然看到以下各种崩溃报告:

我对这个崩溃报告的解释[UIApplication _handleApplicationSuspend:eventInfo:]是发布一个通知,观察者在被删除之前已被释放。

假设这种解释是正确的,我将如何确定发布的是哪个通知?理想情况下,释放的对象类型是什么?