[英]NSTimer Pause/ resume leak
我希望能夠暫停/恢復我的NSTimer,並在下面找到答案 :
NSDate *pauseStart, *previousFireDate; -(void) pauseTimer:(NSTimer *)timer { pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain]; previousFireDate = [[timer fireDate] retain]; [timer setFireDate:[NSDate distantFuture]]; } -(void) resumeTimer:(NSTimer *)timer { float pauseTime = -1*[pauseStart timeIntervalSinceNow]; [timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]]; [pauseStart release]; [previousFireDate release]; }
效果很好。 但是,當測試我的App的泄漏時,它告訴我這里有泄漏:
[timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]];
誰能幫我? 您可以從我使用的代碼中看到,pauseStart和previousFireDate保留在pauseTime方法中,並在resumeTimer方法中釋放。
非常感謝
山姆
永遠不要在對象上兩次調用init
(或同一族中的任何其他方法)兩次。 ( 這就是原因 )。 將該行更改為此:
[timer setFireDate:[NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate]];
你會沒事的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.