ユーザーがウィンドウ内のボタンを押したときにNSNotificationを自分自身に送信する動作中のアプリがあります(PyObjCを使用したXcode):
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に置き換えるだけで、例が機能します。