1.scheduled开头和非schedule的开头方法的区别。系统框架提供了几种创建NSTimer的方法,其中以scheduled开头的方法会自动把timer加入当前run loop,到了设定的时间点就会触发指定的方法,而没有scheduled开头的方法则需要程序员自己手动添加到timer到一个run loop中才会有效。run loop在运行时一般有两个mode,一个defaultmode,一个trackingmode,正常情况下run loop使用defaultmode,scheduled生成的timer会默认添加到defaultmode中,当我们互动scrollview时,run loop切换到trackingmode运行,于是我们发现定时器失效了。为了使定时器在我们滑动scrollview时也能正常运行,我们需要确保defaultmode和trackingmode里都添加了我们生成的timer。如:

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:_timeInterval target:self selector:@selector(addone) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:UITrackingRunLoopMode];

或者:

NSTimer *timer = [NSTimer timerWithTimeInterval:_timeInterval target:self selector:@selector(addone) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:UITrackingRunLoopMode];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

2.使用NSTimer时,timer会保持对target和userInfo参数的强引用。只有当调取了NSTimer的invalidate方法时,NSTimer才会释放target和userInfo。生成timer的方法中如果repeats参数为NO,则定时器触发后会自动调取invalidate方法。如果repeats参数为YES,则需要程序员手动调取invalidate方法才能释放timer对target和userIfo的强引用。

3.在使用repeats参数为YES的定时器时,如果在使用完定时器时后没有调取invalidate方法,导致target和userInfo没有被释放,则可能会形成循环引用情况,从而影响内存释放。

最新文章

  1. 架构师养成记--11.Executor概述
  2. iOS版微信朋友圈数据库的简要分析
  3. Ubuntu 14 修改默认打开方式
  4. MySQL5.6 on Windows 安装失败: String was not recognized as a valid DateTime
  5. CF 2B.The least round way
  6. Leetcode: Graph Valid Tree && Summary: Detect cycle in undirected graph
  7. OpenGL第6、7讲小结
  8. objective-c 错题
  9. 部署、收回和删除解决方式----STSADM和PowerShell
  10. js在(FF)中长字段溢出(自动换行)
  11. loadrunner scripts
  12. JAVA设计模式:状态模式
  13. Spring的IOC容器第一辑
  14. CSS(四)float 定位
  15. Python编码、集合set、深浅拷贝
  16. TCP/IP学习
  17. Qt学习2---信号与槽
  18. 记一次网页超时登录的Bug
  19. otter部署【原创】
  20. 递归、嵌套for循环、map集合方式实现树形结构菜单列表查询

热门文章

  1. TinyMCE:下载、安装、配置
  2. OrientDB部署
  3. Spring初始化机制
  4. python3 练习题100例 (三)
  5. Prism for WPF 搭建一个简单的模块化开发框架 (一个节点)
  6. C#实现窗口最小化到系统托盘
  7. [Python3.X]python 实现斐波那契数列
  8. 【转载】COM编程入门不得不看的文章 :第一部分 什么是COM,如何使用COM
  9. OpenCV 3.2 Viz 3D可视化
  10. Asp.net Web Api开发Help Page 添加对数据模型生成注释的配置和扩展