标签:
NSTimer使用注意点及总结
总结以下在NSTimer的使用中遇到的一些问题:
如果这样做,会导致对象永远无法调用dealloc函数,也就是会造成内存泄漏。
一个比较合理的解释是NSTimer的回调方法具有retain属性,所以不停止它的情况下被引用对象的retainCount无法降为0,导致内存泄漏的死循环
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