网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

iOS高性能定时器解决方案

最近在做一个电商项目,因为有很多界面有打折商品,打折商品会时间限制,所以里面用到了大量的定时器来算倒计时。每一个页面就是一个定时器。觉得太耗性能,想到了一个比较节约性能的方式。全局就一个定时器,控制全部的界面的倒计时。

成都创新互联成都网站建设按需求定制开发,是成都网站开发公司,为效果图设计提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站推广热线:028-86922220

项目用的是swift3.0  

1、解决思路:

创建一个定时器的类,这个系统也就这一个定时器,定时器里面有一个代理方法,然后定时器执行的方法就是执行者个代理,那个需要用到定时器的界面,就去继承这个代理,然后实现代理的方法就行。

2、代码:

定时器类

import UIKit

protocol SSTTimerDelegate: class {

    func updateTime()

}

final class SSTTimer: NSObject {

    weak var delegate:SSTTimerDelegate?

    static var shared: SSTTimer {

        struct Static {

            static let instance: SSTTimer = SSTTimer()

        }

        return Static.instance

    }

    

    private override 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

    @IBOutlet weak var timeLabel: UILabel!

    override func viewDidLoad() {

        super.viewDidLoad()

    }

    override func 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

    @IBOutlet weak var timeLabel: UILabel!

    override func viewDidLoad() {

        super.viewDidLoad()

      

    }

    override func viewWillAppear(_ animated: Bool) {

        TimerUtil.shared.delegate = self

    }

 

    

}

extension ViewThreeVC: TimerDelegate {

    func updateTime() {

        i = i + 1;

        timeLabel.text = "\(i)"

    }

}


新闻名称:iOS高性能定时器解决方案
转载来源:http://bjjierui.cn/article/ieeopd.html

其他资讯