无法在Objective-C中生成新线程

时间:2016-12-01 06:36:27

标签: objective-c multithreading

我正在使用位于我的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);
        }
    }

1 个答案:

答案 0 :(得分:1)

您应该将launchJar的语句放入自动释放池中:

- (void)launchJar {
    @autoreleasepool {
        NSAppleScript *script = [[NSAppleScript alloc] initWithSource:scriptToLaunch];
        [script executeAndReturnError:nil];
        NSLog(@"hitting this point");
    }
}

BTW:您应该避免直接使用NSThread启动线程。请改为NSOperationQueue或GCD。