Repeating NSTimer, weak reference, owning reference or iVar?

前端 未结 2 967
小蘑菇
小蘑菇 2020-12-06 12:07

I thought I would put this out here as a separate question from my previous retaining-repeating-nstimer-for-later-access as the discussion has moved forward making a new qu

2条回答
  •  时光取名叫无心
    2020-12-06 12:18

    I generally manage the invalidate inside of the accessor so that you never get surprised by a timer accessing you after you think you got rid of it:

    @property(nonatomic, retain) NSTimer *walkTimer;
    [self setWalkTimer: ti];
    
    - (void)setWalkTimer:(NSTimer *)aTimer
    {
        if (aTimer != walkTimer_)
        {
            [aTimer retain];
            [walkTimer invalidate];
            [walkTimer release];
            walkTimer = aTimer;
        }
    }
    ...
    ...
    // Cancel method
    [self setWalkTimer:nil];
    ...
    ...
    // Make a new timer, automatically invalidating the old one
    [self setWalkTimer:[... a new timer ...]]
    ...
    ...
    // dealloc method
    [walkTimer_ invalidate];
    [walkTimer_ release];
    [super dealloc];
    

提交回复
热议问题