我正在使用位于我的objective-c代码中的Applescripts启动我的JAR。
我想在新线程(NSThread)中执行此操作。
注意:我使用过GCD,但它并不能帮助我,因为即使并发队列也有 对主线程的依赖。
-(void) launchJar{
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:scriptToLaunch];
[script executeAndReturnError:nil];
NSLog(@"hitting this point");
}
int main(int argc, char *argv[]) {
@autoreleasepool {
MCMCustomURLSchemeHandler *mcmCustomURLHandler = [[MCMCustomURLSchemeHandler alloc] init];
[NSThread detachNewThreadWithBlock:@selector(launchJar) toTarget:[JARLauncher class] withObject:nil];
return NSApplicationMain(argc, argv);
}
}
答案 0 :(得分:1)
您应该将launchJar
的语句放入自动释放池中:
- (void)launchJar {
@autoreleasepool {
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:scriptToLaunch];
[script executeAndReturnError:nil];
NSLog(@"hitting this point");
}
}
BTW:您应该避免直接使用NSThread
启动线程。请改为NSOperationQueue
或GCD。