iOS 高性能定时器解决方案2(商品打折倒计时)

4 篇文章 0 订阅

1、上一篇 iOS 高性能定时器解决方案有缺陷,上一篇用的是代理设计模式,当离开当前界面时,代理就失效了,所以定时器的代理事件就不再执行,导致出错。现在这篇进行了改进,用通知实现。

2、还是会有一个全局定时器

import UIKit
let NotifyUpdateTime = NSNotification.Name(rawValue:"notifyUpdateTime")
final class TimerUtil:NSObject {
    static var shared:TimerUtil {
        struct Static {
            static let instance: TimerUtil =TimerUtil()
        }
        return Static.instance
    }

    private overrideinit() {
        super.init()
        let timer = Timer(timeInterval: 1.0, target:self, selector: #selector(didTimerAlarm), userInfo:nil, repeats: true)
        RunLoop.main.add(timer, forMode:RunLoopMode.commonModes)
    }

    func didTimerAlarm() {
        NotificationCenter.default.post(name:NotifyUpdateTime, object:nil, userInfo:nil)
    }
}

 

 

controller 1

class ViewController:UIViewController {
     var i =0
    @IBOutletweak var label:UILabel!

    overridefunc viewDidLoad() {
        super.viewDidLoad()
    }

    overridefunc didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    overridefunc viewWillAppear(_ animated:Bool) {
        //接受time通知
        NotificationCenter.default.addObserver(self, selector:#selector(updateTime),

                                               name:NotifyUpdateTime, object: nil)
    }

    func updateTime() {
        i =i + 1;
        label.text ="\(i)"
    }
}

 

ccontroller 2

class ViewTwoVC:UIViewController {
    var i =0
    @IBOutletweak var timeLabel:UILabel!
    overridefunc viewDidLoad() {
        super.viewDidLoad()
    }

    overridefunc viewWillAppear(_ animated:Bool) {

        //接受time通知
        NotificationCenter.default.addObserver(self, selector:#selector(updateTime),

                                               name:NotifyUpdateTime, object: nil)

    }
    func updateTime() {
        i =i + 1;
        timeLabel.text ="\(i)"
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值