UITableViewCell使用NSTimer导致Cell的dealloc方法不被调用
来源:互联网 发布:中国联通网络在线客服 编辑:程序博客网 时间:2024/04/19 23:09
我们在开发的过程中会遇到这样的情况,就是TableView的每一个cell都有一个NSTimer来进行一些时间控制的操作,这种情况往往会有你意想不到的问题.下面我们来探讨一下. 比如你的cell里面有如下方法:
- (void)addTimer
{
timer = [NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(dateChanged)userInfo:nilrepeats:YES];
[timer fire];
}
这个方法看似没有任何问题,但是你进入视图(这个视图上有使用该Cell的Table),然后返回的时候会发现,使用这个cell的table被释放掉了,但是table的cell没有被释放掉,这是个问题啊.怎么办?问题就出在NSTimer这里了, [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(dateChanged) userInfo:nil repeats:YES];
这句代码会把当前类(也就是这个Cell)的retainCount加1 也就是类似这样[self retain]; 所以我们在timer启动之后把当前类的retainCount 减掉1就可以解决问题了.因此加上这句代码就OK: [self release];
//没有问题的代码如下:
- (void)addTimer
{
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(dateChanged) userInfo:nil repeats:YES];
[timer fire];
[self release];
}
- UITableViewCell使用NSTimer导致Cell的dealloc方法不被调用
- 使用nstimer时 viewController的dealloc不执行
- dealloc方法不调用
- viewcontroller加了NSTimer后,dealloc方法不会调用
- arc中dealloc方法不调用
- iOS viewcontroller中的dealloc方法不调用
- iOS内存话题: NSTimer 导致无法 dealloc
- iOS开发--- WKWebView导致Controller不调用dealloc
- viewController被POP后不调用dealloc的问题
- iOS--造成dealloc不调用的原因
- UITableViewCell注册Cell并重用的方法
- 使用dismissModalViewControllerAnimated 不调用dealloc 内存不释放解决方法
- NSTimer 不准时,使用GCD定时器代替的方法
- UITableViewCell使用cell和cell.contentView的区别
- UITableViewCell中的使用cell和cell.contentView的区别
- UITableViewCell点击不松手时Cell的背景设置
- 使UITableViewCell之间的cell不显示分割线
- 不自定义cell,最原始的创建UITableViewCell
- Virtual Memory Usage from Java under Linux, too much memory used
- jFreeChart教程
- 最新JAVA编程题全集(50题及答案)
- How to Start a Business in 10 Days
- Vuforia SDK在Eclipse和unity3d编译环境下更换标志
- UITableViewCell使用NSTimer导致Cell的dealloc方法不被调用
- 有关数据库连接池
- java的clone方法
- MyEclipse快捷键大全
- Hadoop学习笔记---MapReduce
- java项目换JDK流程
- thinkphp 定时执行php文件--windows系统任务计划
- JAVA经典例子
- WebSphere MQ的原理