社区
iOS
帖子详情
NSTimer的释放问题
NAUYNUJUG
2018-03-06 03:37:08
app的功能要求能在页面里按钮打开后台的定时循环任务一直后台运行,然后继续其他操作,包括离开当前页面啊等等,到时需要停止的时候就再回到页面结束,我是用的NSTimer来实现循环任务,但是在网上了解的都是需要在离开页面时就释放NSTimer,否则会内存泄漏云云,请问这个该怎么解决,如何能实现后台循环任务还能离开当前页面,后面还能释放这个定时器?
...全文
1263
5
打赏
收藏
NSTimer的释放问题
app的功能要求能在页面里按钮打开后台的定时循环任务一直后台运行,然后继续其他操作,包括离开当前页面啊等等,到时需要停止的时候就再回到页面结束,我是用的NSTimer来实现循环任务,但是在网上了解的都是需要在离开页面时就释放NSTimer,否则会内存泄漏云云,请问这个该怎么解决,如何能实现后台循环任务还能离开当前页面,后面还能释放这个定时器?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
铘少偌夢
2018-11-15
打赏
举报
回复
这个问题最主要的重点是释放的时机,比如当任务完成后就释放NSTimer,可以在NSTimer的循环方法中去判断任务完成的时机,当完成时就释放NSTimer。例如下面的代码,偏移时间和时间节点的比较: if (self.timeOffset >= self.duration) { [self.timer invalidate]; self.timer = nil; }
ShenYj_4
2018-10-09
打赏
举报
回复
楼上基本都补充到了 我在汇总一下: 1. 这个NSTimer在这种场景下,不适合放在页面里了, 应该放在一个生命周期更长的类中 2. 指望定制器实现后台是没戏了, 支持后台的功能很多,比如:音频、蓝牙、定位。。。,可以结合业务配合其中一种功能开启后台模式
weixin_41694952
2018-09-29
打赏
举报
回复
实现一个全局类,这个类不能做其他任何事情,只是持有这个NSTimer。 当你第一次进入这个页面的时候,初始化该全局类,自动创建NSTimer,并执行,此时NSTimer和全局类绑定,和页面没有关系 当你不需要NSTimer时,释放该全局类,并在全局类的dealloc方法里调用NSTimer 的 invalidate 函数,完成对NSTimer的释放 为什么能释放? 因为NSTimer的delgate是Strong类型的,之所以会引起内存泄漏,是因为当你在页面里强引用NSTimer时,NSTimer的delegate又强引用了页面,所以才会出现内存泄漏。
大飞哥666
2018-03-13
打赏
举报
回复
你需要解决2个问题: 1.是如何保证NSTimer不被释放。楼上的朋友已经帮你解决了,将NSTimer放到不会被销毁的类里边,比如AppDelegate。 2.你需要保证你的APP在后台能够一直运行。正常情况下,你进入后台,APP就会被挂起,所以你需要解决一下这个问题。可以参考我的博客,里边有一篇正好是介绍APP后台运行的文章。 希望能帮助到你。
不担心
2018-03-12
打赏
举报
回复
"app的功能要求,能在页面里,按钮打开后台的定时循环,任务一直后台运行" 应该是这个意思吧,整个看下来没有特别的地方啊,你可以把NSTimer放在类似AppDelegate的公共类里就和你的页面没关系了啊,在AppDelegate里定义一个NSTimer,在启动的时候初始化他,但不要运行,然后在你需要控制的页面,比如A中点击了按钮再启动NSTimer,这时候A你要关闭要干嘛都不影响timer,要关闭的话回到A页面关闭,没有问题
ios 时间定时器
NS
Timer
应用demo
五、`
NS
Timer
`的线程
问题
由于`
NS
Timer
`非线程安全,通常在主线程中创建和管理,以避免线程同步
问题
。如果需要在其他线程中使用,需注意线程间通信和RunLoop的
问题
。 六、`
NS
Timer
`的内存管理 `
NS
Timer
`会强引用其...
NS
Timer
定时器
- **内存管理**:`
NS
Timer
`是弱引用的,所以必须在合适的地方保留对它的强引用,否则可能会被提前
释放
,导致定时器失效。 - **运行循环**:确保你的定时器与当前运行循环兼容,否则可能无法正常工作。 - **暂停与...
iOS
NS
Timer
循环引用的办法
这样就会导致
NS
Timer
和 target 之间形成循环引用,无法
释放
内存。今天,我们将介绍 iOS
NS
Timer
循环引用的办法,解决这个常见的
问题
。
NS
Timer
循环引用的原因 ------------------------ 在上面的代码中,我们...
NS
Timer
使用 文档说明
1. **内存泄漏**:当持有`
NS
Timer
`的实例时,应确保在适当的时候调用`invalidate()`方法
释放
资源。 2. **主线程与子线程**:默认情况下,`
NS
Timer
`在主线程执行。如果希望在后台线程执行,需要显式地指定队列。 3...
swift-常见
NS
Timer
的消毁方法用一种优雅的方式销毁
NS
Timer
在Swift编程中,`
NS
Timer
`是一个非常常用的定时器类,用于执行周期性的任务。然而,如果不正确地管理,`
NS
Timer
`可能会导致...在使用`
NS
Timer
`时,一定要确保在不再需要它时进行适当的清理,以防止内存泄漏和性能
问题
。
iOS
29,049
社区成员
12,464
社区内容
发帖
与我相关
我的任务
iOS
主要讨论与iOS相关的软件和技术
复制链接
扫一扫
分享
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章