问题标签 [nsnotifications]

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 投票
2 回答
1398 浏览

cocoa - 在 Cocoa 中的进程之间传递数据的最佳实践

我正在解决一个需要我在 64 位 Cocoa 应用程序中执行以下操作的问题:

  1. 从我的应用程序中生成一个 32 位 Cocoa 辅助工具(命令行工具)。此帮助程序将打开一个文件(准确地说是一部快速电影)并使用 32 位 API(Quicktime-C API)访问有关该文件的信息
  2. 从 32 位进程收集的数据需要传回 64 位应用程序。
  3. 64 位应用程序应等到 32 位进程完成后再继续

在 Cocoa 中有很多方法可以实现这一点,但据我所知,这是我可以采用的两种方法。

选项 1:带有管道的 NSTask

  1. 使用 NSTask 生成 32 位进程
  2. 将 NSTasks 标准输出重定向到管道,并在 64 位进程中从该管道读取数据。
  3. 解析管道中的数据,这将涉及将字符串从标准输出转换为数据(整数、浮点数、字符串等)

选项 2:带有 NSDistributedNotificationCenter 的 NSTask

  1. 使用 NSTask 生成 32 位进程
  2. 当数据在 32 位进程中准备好时,发送一个 NSNotification 到分布式通知中心,并在事件中包含一个包含所有相关数据的字典。
  3. 在 64 位应用中订阅相同的 NSNotification

所以我对 StackOverflowers 的问题是,哪个选项“更好”?
哪个是更好的做法?
哪个更有效率?

我倾向于选项 2,因为似乎涉及的代码更少。如果这两种方法都不是很好,有没有更好的方法来做到这一点?

0 投票
4 回答
4784 浏览

cocoa - 如何在我的 Cocoa 应用程序中获得系统时间更改的通知?

我有一个记录事件日期戳的 Cocoa 应用程序。我需要知道系统时间何时重置以及重置多少,但我似乎无法在任何地方通知我这样的事情发生了。由于 NTP 重置时钟或用户重置(例如从系统偏好设置),可能会发生此更改。如果只有一个NSNotification我可以注册接收,那就太好了,但我愿意接受任何建议。

0 投票
3 回答
1673 浏览

iphone - 如何指定通知发送者?(可可触摸)

我能找到的所有设置通知的示例如下所示:

[nc addObserver:self selector:@selector(keyboardWillShow:) name: UIKeyboardWillShowNotification object:nil];

其中对象始终设置为零。object 是 notificationSender,在文档中是这样定义的:

“观察者想要接收其通知的对象;也就是说,只有这个发送者发送的通知才会传递给观察者。当为 nil 时,通知中心不使用通知的发送者来决定是否将其传递给观察者。”

我只想为一个特定的文本视图接收键盘通知,所以我想告诉 addObserver ,但我不知道为对象提供什么。我尝试了绑定到我感兴趣的文本视图的出口变量,但这只是导致我根本没有收到任何通知。

有什么建议么?

0 投票
4 回答
4748 浏览

ios - 我在哪里以及如何注册对象以接收通知?

例如,当内存不足时,系统会发送UIApplicationDidReceiveMemoryWarningNotification通知。这就是苹果当时在其文档中所说的全部内容。但是这个通知是从哪里来的,它是发送到哪个方法的呢?或者我在哪里以及如何注册我收到的通知?

0 投票
1 回答
180 浏览

iphone - 我需要通知协议吗?

我有使用 NSURLConnection 的 classDownload。我想将所有 NSURLConnection 事件保留在 classDownload 中。ClassA 想使用classDownload 的同时也接收connectionDidFinishLoading 等通知,在classDownload 中称为Finish。如何从 classDownload 获取通知到 ClassA?

0 投票
1 回答
893 浏览

cocoa - 使用 NSRect 信息发布 NSNotification 的最佳方式?

使用 NSRect 信息发布通知的最佳方式是什么?

这是我当前的解决方案(使用 NSStringFromRect)。

但是,我不确定这是否是发送 rect 结构的最佳方式。

0 投票
2 回答
2088 浏览

iphone - 在将对象作为用户数据发送到 NotificationCenter 之前,我是否需要自动释放它?

我需要使用postNotificationName:object:userInfo:方法发布通知,并且我正在传递一个自定义类FileItemuserInfo以便我可以在另一端获取它。autorelease我应该这样使用吗

或者我可以在allocrelease对象传递到默认通知中心后立即将其传递给默认通知中心吗?

我试图在这里获得约定,因为我假设每当我将一个对象作为消息中的参数传递给另一个对象时,接收对象会在需要时进行保留,并且我可以安全地释放所述参数?

0 投票
2 回答
9688 浏览

iphone - NSNotificationCenter:对象是否在它们发布的同一线程上接收通知?

我很想知道在发布对象的方法完成和删除之前,我是否可以期望观察对象的方法被推入堆栈。

0 投票
3 回答
5908 浏览

objective-c - 如何在 NSNotificationCenter 中使用参数化方法?

我想将 dict 传递给方法 processit。但是一旦我访问字典,我就会得到 EXC__BAD_INSTRUCTION。

在收件人方法中:

关于我做错了什么有什么建议吗?

0 投票
2 回答
871 浏览

iphone - NSNotification 与 AsyncSocket 结合使用时的奇怪之处

我正在使用 AsyncSocket 从我的 iPhone 应用程序连接到服务器。在从服务器接收数据的委托中,我发布了一条通知,告诉 tableView 的委托在 tableView 上触发 reloadData:

在视图控制器上:

现在,这根本行不通。通知已提交,但 ViewController 无法识别。但是,当我在 applicationDidFinishLaunching 中做同样的事情时:

我在 viewController 中收到了通知。

有谁知道为什么?它与 AsyncSocket 的委托方法在不同的线程中有关吗?

提前致谢。