首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSAppleScript和无响应接口- Objective-C

NSAppleScript和无响应接口- Objective-C
EN

Stack Overflow用户
提问于 2012-08-30 18:50:08
回答 1查看 550关注 0票数 2

我想从我的应用程序中运行几行applescript代码。标准方法是使用NSAppleScript类。但是,因为代码可能需要几分钟才能完成,所以我必须使用单独线程,否则接口将停止。最大的问题是,正如它所说的here,NSAppleScript类只能在主线程上运行。

因此,如果我在单独的线程上运行代码,我的应用程序就会崩溃;如果我在主线程上运行它,它就会停止。有什么想法吗?

另外,我也考虑过使用NSTask和osascript命令,但我发现osascript在某些地方(找不到链接)不支持用户输入,比如对话框和其他东西。我不确定这是否是真的,但如果是真的,那么osascript就不是一个解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-17 01:09:22

因此,我最终编写了一个帮助器,通过NSTask启动。下面是代码,如果有人感兴趣的话:

对于启动器:

代码语言:javascript
复制
NSArray* args = [NSArray arrayWithObject: <<AS code here>>];

task = [NSTask new];
[task setLaunchPath: [[NSBundle mainBundle] pathForResource: @"ASHelper" ofType: @""]];
[task setArguments: args];
[task launch];

帮助者:

代码语言:javascript
复制
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        NSString* source = [NSString stringWithCString: argv[1] length: strlen(argv[1])];
        NSAppleScript* as = [[NSAppleScript alloc] initWithSource: source];
        [as executeAndReturnError: nil];
    }
    return 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12195203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档