iOS 高性能定时器解决方案
来源:互联网 发布:西安软件开发公司 编辑:程序博客网 时间:2024/04/30 07:34
最近在做一个电商项目,因为有很多界面有打折商品,打折商品会时间限制,所以里面用到了大量的定时器来算倒计时。每一个页面就是一个定时器。觉得太耗性能,想到了一个比较节约性能的方式。全局就一个定时器,控制全部的界面的倒计时。
项目用的是swift3.0
1、解决思路:
创建一个定时器的类,这个系统也就这一个定时器,定时器里面有一个代理方法,然后定时器执行的方法就是执行者个代理,那个需要用到定时器的界面,就去继承这个代理,然后实现代理的方法就行。
2、代码:
定时器类
import UIKit
protocol SSTTimerDelegate:class {
func updateTime()
}
final class SSTTimer:NSObject {
weakvar delegate:SSTTimerDelegate?
staticvar shared: SSTTimer {
struct Static {
staticlet instance: SSTTimer =SSTTimer()
}
returnStatic.instance
}
privateoverride init() {
super.init()
Timer.scheduledTimer(timeInterval:1.0, target: self, selector:#selector(didTimerAlarm), userInfo:nil, repeats:true)
}
func didTimerAlarm() {
self.delegate?.updateTime()
}
}
其他要用到定时器的类:
1、
class ViewController:UIViewController {
var i =0
@IBOutletweak var timeLabel:UILabel!
overridefunc viewDidLoad() {
super.viewDidLoad()
}
overridefunc viewWillAppear(_ animated:Bool) {
TimerUtil.shared.delegate =self
}
}
extension ViewController: TimerDelegate {
func updateTime() {
i =i + 1;
timeLabel.text ="\(i)"
}
}
2、
class ViewThreeVC:UIViewController {
var i =0
@IBOutletweak var timeLabel:UILabel!
overridefunc viewDidLoad() {
super.viewDidLoad()
}
overridefunc viewWillAppear(_ animated:Bool) {
TimerUtil.shared.delegate =self
}
}
extension ViewThreeVC: TimerDelegate {
func updateTime() {
i =i + 1;
timeLabel.text ="\(i)"
}
}
- iOS 高性能定时器解决方案
- iOS 高性能定时器解决方案2(商品打折倒计时)
- 高性能定时器
- 高性能服务器--定时器
- 针对高性能路由流量的思科IOS解决方案
- 高性能定时器 --- 时间堆
- WEB高性能解决方案
- Netty高性能解决方案
- Android 竞拍类App节选功能点-高性能更新数据,错位图片闪烁,定时器错乱,定时器时间不同步解决方案
- iOS-高性能
- DL380G5+高性能集群解决方案
- 高性能服务器编程中的定时器
- 高性能服务器编程中的定时器
- 高性能定时器时间轮的实现
- 高性能服务开发之定时器
- 高性能的定时器设计---时间轮
- 高性能服务开发之定时器
- JAVA高性能高并发解决方案
- linux下免费开源主机可视化面板AMH的介绍及安装
- for 循环语句
- matlab 条件断点 的设置和用法
- matlab randn函数 标准正态分布
- matlab 特殊字符的显示
- iOS 高性能定时器解决方案
- matlab 部分text关键字
- 【CQOI2013】新数独 爆搜
- Java多线程
- 双纵坐标绘图-Plotyy
- matlab 对数坐标系绘图函数
- uva 712 S-Tree (S树)模拟
- matlab view 控制图片显示视角
- [DP] Codeforces 403D #236 (Div. 1) D. Beautiful Pairs of Numbers