作者dryman (dryman)
看板MacDev
标题[心得] 用NSConnection来做scriptable app
时间Thu Jan 27 00:53:09 2011
我是个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)
1F:推 sinread:赞 (fb玩太多...) 01/27 11:52
2F:→ zonble:写 iPhone 的人大概就不知道 DO 好玩在哪里 :p 01/27 17:30
3F:→ zonble:话说如果只是要用 perl 吐出一个像这样的 alert 的话 01/27 17:30
4F:→ zonble:其实也可以呼叫 Growl。Growl 也有 perl interface 01/27 17:31
5F:→ dryman:DO真的很好玩,可以弄一个webview然後用script控制它 01/27 17:42
6F:→ dryman:这样就变成有javascirpt的web crawler了XD 01/27 17:43
7F:推 popcorny:请问DO是什麽东西? 01/28 09:17
8F:→ dryman:distributed object 01/28 13:36
9F:→ dryman:可以将一个程式的object,传给另一个程式来操作,超神奇... 01/28 13:36
10F:→ popcorny:cool!! 感觉拿来做自动化测试很好用... 01/29 15:42
11F:推 hechian:听起来好像很棒 ... 也许未来写MacApp就用得到了XD 01/29 23:03