У меня есть работающее приложение, которое отправляет 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 выше, и пример работает.