[心得] 用NSConnection來做scriptable app

看板MacDev作者 (dryman)時間14年前 (2011/01/27 00:53), 編輯推噓3(308)
留言11則, 5人參與, 最新討論串1/1
我是個perl的愛好者 無奈perl不像python/ruby一樣有官方的cocoa binding 只有Foundation有官方支援 (cocoa有人自己做binding,但是我的電腦由於wxwidget爛掉不能用) 經過研究後發現有個東西可以用,就是NSConnection 由於他在Foundation.framework裡面,所以perl也可以使用 ======= obj-c的部份,在application delegate中 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Insert code here to initialize your application id connection = [NSConnection defaultConnection]; [connection setRootObject:self]; [connection registerName:@"testServer"]; } 註冊一個testServer的名稱,等會由其他的程式來讀取 在perl或其他script language中: #!/usr/bin/perl use Foundation; $server = NSConnection-> rootProxyForConnectionWithRegisteredName_host_("testServer",0); # 把註冊名稱的這個物件抓出來 if (!$server or !$$server) { print "Can't get server\n"; } else{ print "can reach server\n"; $server->retain(); $server->myAlert_("hello world!\n"); $server->release(); } myAlert是我自己寫的obj-c method 這邊想弄什麼method/getter/setter都ok的啦~~ 使用時要先把obj-c server的程式啟動 然後再用perl去遙控它 因此,程式當中只要多加上那一小段NSConnection的程式碼 附上自己程式中一部分架構的文件 整個程式就可以透過NSConnection來遙控了 真的是蠻好玩的hack XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.169.142 ※ 編輯: dryman 來自: 114.45.169.142 (01/27 00:53)

01/27 11:52, , 1F
讚 (fb玩太多...)
01/27 11:52, 1F

01/27 17:30, , 2F
寫 iPhone 的人大概就不知道 DO 好玩在哪裡 :p
01/27 17:30, 2F

01/27 17:30, , 3F
話說如果只是要用 perl 吐出一個像這樣的 alert 的話
01/27 17:30, 3F

01/27 17:31, , 4F
其實也可以呼叫 Growl。Growl 也有 perl interface
01/27 17:31, 4F

01/27 17:42, , 5F
DO真的很好玩,可以弄一個webview然後用script控制它
01/27 17:42, 5F

01/27 17:43, , 6F
這樣就變成有javascirpt的web crawler了XD
01/27 17:43, 6F

01/28 09:17, , 7F
請問DO是什麼東西?
01/28 09:17, 7F

01/28 13:36, , 8F
distributed object
01/28 13:36, 8F

01/28 13:36, , 9F
可以將一個程式的object,傳給另一個程式來操作,超神奇...
01/28 13:36, 9F

01/29 15:42, , 10F
cool!! 感覺拿來做自動化測試很好用...
01/29 15:42, 10F

01/29 23:03, , 11F
聽起來好像很棒 ... 也許未來寫MacApp就用得到了XD
01/29 23:03, 11F
文章代碼(AID): #1DG55uAm (MacDev)
文章代碼(AID): #1DG55uAm (MacDev)