ユニバーサル・タイマ管理CD_CountDown
いいえでたらめありません、地図上の話:
目標
- 終了ページは、背景にアプリケーションがまだ有効です
- タイミング作成するために、同じアイテムを繰り返しません
- コードのカウントダウン、スパイク、活動のタイミング...一般
- 挿入されたコードを有する、すなわち、一つまたは二つ
そのシンプルで、コードを見てください
/// 创建计时,3种方式,相同ID的计时不会重复创建
func countDown(_ tag:Int){
switch tag {
case 0:// 代理接收
CD_CountDown.make(.delegate(self, "123", 120, 0.1))
case 1://广播
CD_CountDown.make(.notification("456", 120, 0.1))
case 2://闭包回调接收
CD_CountDown.make(.callBack("789", 60, 0.1, { [weak self](model) in
self?.lab_3.cd.text("\(model.day)天\(model.hour):\(model.minute):\(model.second):\(model.millisecond/100)")
}))
default:
break
}
}
复制代码
/// 接收
extension ViewController:CD_CountDownProtocol {
func cd_countDown(withModel model: CD_CountDown.Model, id: String) {
self.lab_1.cd.text("\(model.day)天\(model.hour):\(model.minute):\(model.second):\(model.millisecond/100)")
}
}
NotificationCenter.default.rx
.notification(Notification.Name(rawValue: "456"), object: nil)
.asObservable()
.subscribe(onNext: { [weak self](n) in
if let model = n.userInfo?["456"] as? CD_CountDown.Model {
self?.title = "\(model.day)天\(model.hour):\(model.minute):\(model.second)"
}
})
.disposed(by: disposeBag)
deinit {
//如果不需要保持 可以移除
CD_CountDown.remove("456")
}
复制代码
- 遅延もあります
CD_CountDown.after(10) {[weak self] in
self?....
}
复制代码
ます。https://juejin.im/post/5cfe5a8bf265da1bd1464d1aで再現