2016-12-01 4 views
0

Я запускаю свой JAR с помощью Applescripts, которые находятся внутри моего объектного кода c.Невозможно создать новую тему в Objective - C

Я хочу выполнить эту операцию в новом потоке (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

Вы должны положить заявления launchJar в autorelease бассейне:

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

BTW: Вы должны избегать запуска темы с NSThread напрямую. Попробуйте NSOperationQueue или GCD.

+0

Я следил за вашим советом и убежал. У меня также была проблема с тем, где я размещал свой метод launchJar. Решив это, я понял, что другой вопрос: http://stackoverflow.com/questions/40904677/how-do-i-ensure-that-i-close-my-app-only-when-all-the-threads -have-finished-exec Не могли бы вы взглянуть на него? –

Смежные вопросы