gpt4 book ai didi

cocoa - OS X 中应用程序之间的 NSNotifications

转载 作者:行者123 更新时间:2023-12-03 17:36:27 24 4
gpt4 key购买 nike

我有一个工作应用程序,当用户按下窗口中的按钮时,它会向自身发送 NSNotification(Xcode 使用 PyObjC):

from Foundation import *
from AppKit import *
import objc

class SpeakAppDelegate(NSObject):
def applicationDidFinishLaunching_(self, sender):
NSLog("Application really did finish launching.")
nc = NSNotificationCenter.defaultCenter()
nc.addObserver_selector_name_object_(
self, "mycallback:", 'love_note', None)
#self, "mycallback:", None, None)

@objc.signature('v@0:@8')
def mycallback_(self,note):
print 'note'
print note.description()

@objc.IBAction
def button_(self,sender):
print sender, 'button'
nc = NSNotificationCenter.defaultCenter()
nc.postNotificationName_object_userInfo_(
'love_note', None, {'path':'xyz'})

(细节:签名可能不完全正确,但它有效)。

让它继续运行。现在我想弄清楚如何从另一个应用程序向此应用程序发送相同的通知,例如:

// gcc tell.m -o test -framework Foundation
#import <Foundation/Foundation.h>

int main() {
NSNotificationCenter *nc;
nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"love_note"
object:nil
userInfo:nil ];
return 0;
}

我注意到,如果我取消第一个应用程序中的行注释,那么我会收到很多其他通知,但它们都来自与我的应用程序相关的事件。我从来没有听到外面有任何声音。如何在进程之间发送通知?那么,有没有办法从命令行发送通知呢?谢谢。

更新:只需替换上面的 NSDistributedNotificationCenter,示例就可以工作。

最佳答案

我不相信有一种方法可以使用 NSNotificationCenter 在两个应用程序之间进行通信。我以前没有使用过它,但我相信两个应用程序的通信对于 Distributed Objects 来说更像是一项工作。 。

来自苹果的文档:

Each process has a default notification center that you access with the NSNotificationCenter +defaultCenter class method. This notification center handles notifications within a single process. For communication between processes on the same machine, use a distributed notification center (see “NSDistributedNotificationCenter”).

编辑:

看起来确实像 NSDistributedNotificationCenter也可以做您正在寻找的事情,而无需深入了解分布式对象。

关于cocoa - OS X 中应用程序之间的 NSNotifications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com