On Jan 14, 2013, at 10:07 AM, David Duncan <david.dun...@apple.com> wrote:
> On Jan 12, 2013, at 10:49 AM, Gordon Apple <g...@ed4u.com> wrote:
> 
>> When compiled under ARC, NSTimer should have a weak, not strong, reference 
>> to its target.
> 
> If you want this, file a bug. Posting on the mailing list isn't guaranteed to 
> get your request anywhere close to the persons responsible for evaluating and 
> implementing features.
> 
>> When the timer starts to fire, check the reference for nil and invalidate 
>> itself.  Come on guys, how hard is that?
> 
> Probably harder than you give credit for, given that the framework has to 
> work correctly for MRR, ARC and GC (where "correct" is subtly different for 
> each environment) as well as support existing applications of each of these 
> flavors that wouldn't know about this new behavior.

It is effectively impossible: unlike GC, ARC is not a new runtime environment.  
Different NSTimers may be used from different parts of the program that are 
compiled under different settings — most likely, a system framework compiled 
under MRR and an executable compiled under ARC.  Indeed, the *same* NSTimer can 
be used from different places, which should presumably agree on how strongly 
the timer holds its target.

Also, there are quite a lot of existing ARC applications that would potentially 
break if we changed the semantics of NSTimer under ARC, so even if we could 
implement this, it is really far too late.

Weak references can be an important tool, but for most places (like UI 
hierarchies) it is usually a much better idea to support an explicit teardown 
stage that does things like destroy timers and break cycles.

John.
_______________________________________________

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