On 15 Sep 2013, at 16:42, Jean-Daniel Dupas <devli...@shadowlab.org> wrote:
> XPC is based on GCD. There is chance that your request handling occurs in a > GCD thread and not on the main thread. Correct. NSThread tells me: mainThread <NSThread: 0x7f92b14096a0>{name = (null), num = 1} currentThread <NSThread: 0x7f92b3502cf0>{name = (null), num = 2} > [NSRunLoop currentRunLoop] returns the current thread run loop. If you are > not on the main thread, it will not work. NSRunLoop *currentRunLoop = [ NSRunLoop currentRunLoop ]; CFRunLoopRef rl1 = [ currentRunLoop getCFRunLoop ]; // mode = nil CFRunLoopRef rl2 = CFRunLoopGetMain (); // mode = kCFRunLoopDefaultMode > Try that instead: CFRunLoopStop(CFRunLoopGetMain()); Tried it. Even tried stopping both run loops, but to no avail. The helper tool just will not quit. But maybe I will be able to make my NSTimers work now having a better understanding of what is going on. Thanks! Gerriet. > Le 15 sept. 2013 à 10:32, Gerriet M. Denkmann <gerr...@mdenkmann.de> a écrit : > >> I have a Helper Tool, running as root, started via SMJobBless and >> communicating vie Xpc. >> >> Works fine, but: >> 1. it cannot stop (CFRunLoopStop), >> 2. Timers never fire >> 3. NSRunLoop currentMode returns nil. >> >> Maybe all three things are related. >> >> To 1: >> >> if ( asked to quit ) >> { >> NSRunLoop *currentRunLoop = [ NSRunLoop currentRunLoop ]; >> CFRunLoopRef rl = [ currentRunLoop getCFRunLoop ]; >> NSLog(@"%s will stop runloop %p",__FUNCTION__, rl); // rl ≠ >> NULL >> CFRunLoopStop ( rl ); // runLoop will NOT stop >> } >> >> Helper Tool main: >> >> int main(int argc, const char * argv[]) >> { >> @autoreleasepool >> { >> NSString * bundleIdentifier = [[NSBundle mainBundle] >> bundleIdentifier]; >> NSXPCListener *listener = [[NSXPCListener alloc] >> initWithMachServiceName: bundleIdentifier ]; >> listener.delegate = ...; >> [listener resume]; >> NSRunLoop *currentRunLoop = [NSRunLoop currentRunLoop]; >> [ currentRunLoop run ]; >> } >> >> return EXIT_SUCCESS; >> } _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com