> On 20 Jun 2017, at 16:24, Alastair Houghton <alast...@alastairs-place.net> 
> wrote:
> 
> On 20 Jun 2017, at 04:04, Gerriet M. Denkmann <gerri...@icloud.com> wrote:
>> 
>> macOS 11+
>> 
>> Some Cocoa app which has to do:
>> 1. something a few seconds later
> 
> The main issue here isn’t energy use so much as whether you want to be able 
> to cancel the operation.  If you need to be able to cancel it before it 
> fires, you’ll want to use NSTimer or a CFRunLoopTimer.

I indeed need the things to cancel: The app might schedule a thing to be done 
in 5 seconds, then decides after 2 seconds that something else has to be done: 
so it need to cancel the previous thing.

[NSTimer invalidate] - very simple.

I tried dispatch_after, where the block checks whether it is cancelled before 
starting. Works fine. Not the most elegant code though.

I did not try these two solutions, but they seem to be cancellable as well:
NSRunLoop       performSelector:target:argument:order:modes:
        cancelPerformSelector:target:argument:

NSObject                performSelector:withObject:afterDelay:
        cancelPreviousPerformRequestsWithTarget:selector:object:


>  Energy wise, the fact this is to happen “a few seconds later” would seem to 
> imply that it isn’t going to happen often, so it’s probably irrelevant and 
> which you choose is a matter of taste.

A valid point. Probably NSTimer is the most elegant solution here.

> 
>> 2. some other thing repeatedly about every 0.1 second.
> 
> Personally, I’d choose an API that directly supports repeating timers, so I’d 
> prefer NSTimer or CFRunLoopTimer over the other options, all else being 
> equal.  I’d imagine that’s most likely to result in the lowest energy usage 
> (repeated use of one-shot timers, it seems to me, is much more likely to 
> result in dynamic memory allocation happening every time the timer fires, and 
> it’s more complicated in your code because you’ll have to manage your next 
> fire time).

I’ll try NSTimer here too and compare the results.

Kind regards,

Gerriet.


_______________________________________________

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