On Oct 20, 2017, at 03:23 , Mark Allan <markjal...@gmail.com> wrote:
> 
> That worked with the block-based NSTimer API but not the selector-based API.  
> I tried changing it to 'currentRunLoop' which got rid of the crash, but the 
> timer never fired.

This is pure guesswork, but I suspect this is what was going on:

— When you scheduled the timer on the main run loop, it was actually being 
scheduled on the main app’s run loop. When it was block based, only the block 
had to be passed across the XPC interface (which somehow works), but when it 
was selector-based, the timer itself had to be passed (which doesn’t work). 
Admittedly this is a pretty silly explanation, but it may have some relation to 
the truth.

— When you scheduled the timer on the current run loop, everything was fine 
either way, except the run loop *wasn’t running* in the XPC thread, so the 
timer never fired.

This is similar to a problem that came up on the developer forums a few weeks 
ago. A developer was using Disk Arbitration callbacks to monitor volumes being 
mounted, and tried to move that code to an XPC process. The callback was 
scheduled on the run loop, yet it was never called. There was more recent API 
that was block-based instead, and that turned out to work fine in an XPC 
process. The fact that scheduling on the run loop didn’t crash indicated that 
there *was* a run loop, but the fact that the callbacks didn’t fire suggested 
that it wasn’t running.

_______________________________________________

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

Reply via email to