码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——实用技术OC篇&NSTimer使用注意点及总结

时间:2015-09-10 23:47:12      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:

NSTimer使用注意点及总结

 

 

总结以下在NSTimer的使用中遇到的一些问题:

 

  • 1. 不要在dealloc函数中停止并释放NSTimer

如果这样做,会导致对象永远无法调用dealloc函数,也就是会造成内存泄漏。

一个比较合理的解释是NSTimer的回调方法具有retain属性,所以不停止它的情况下被引用对象的retainCount无法降为0,导致内存泄漏的死循环

 

 

  • 2.因为要实现类似视频软件里面,UIScrollview定时循环滑动,用到了NSTimer类。在特定时事件情况下需要暂停,和重新启动定时器。初始化:
myTimer = [NSTimer scheduledTimerWithTimeInterval:timeInterval 
    target:self selector:@selector(handleMaxShowTimer:) 
    userInfo:nil repeats:YES];

暂停用 [myTimer invalidate];

想要再重新启动使用了 [myTimer fire];

但是在执行[myTimer fire]时运行报内存错误。思考过后在 [myTimer fire]前加入语句 [myTimer retain];执行后无异常。个人猜测在执行初始化时

myTimer = [NSTimer scheduledTimerWithTimeInterval:timeInterval
       target:self
        selector:@selector(handleMaxShowTimer:) 
        userInfo:nil repeats:YES];    

 

 

给allco了,而[myTimer invalidate]应该不是暂停的意思,而是注销定时器,里面有release的操作。所以会在我执行[myTimer fire]后会崩溃。

所以在每次想再启动定时器的时候我都会再一次初始化一边。

 

iOS开发——实用技术OC篇&NSTimer使用注意点及总结

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4799401.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!