kron 1.2.2

kron 1.2.2

Eonfluxor维护。



kron 1.2.2

CocoaPods compatible GitHub release Swift 4.0 platforms Build Status

什么是 Kron?

Kron 是一个 NSTimer 管理器,通过一个统一的 API 提供了 4 种模式。Kron 负责处理 NSTimer 的实现,同时确保无需额外努力即可进行适当的内存管理。

  1. Kron.debounce:立即调用并在超时时间过去之前拒绝调用
  2. Kron.debounceLast:类似于 debounce,但在超时后也会执行最后的调用
  3. Kron.idle:在超时时间内未被调用后,执行最后的调用
  4. Kron.watchdog:类似于 idle,但可以通过 watchDogCancel 取消

为什么选择 Kron?

  • 与返回定时器对象不同,Kron 通过一个 [KronKey : Timer] 字典来内部管理定时器实例,这使得从远处组件或线程调用定时器变得容易。

  • KronKey 可以是一个 String 结构体或 AnyObject 实例。如果传递了一个对象,键值会从对象的指针推导出来。使用相同的键值调用方法会导致所有定时器模式重置。

  • 由于旨在从远处的实现方便调用 Kron,您可以选择传递一个上下文值 ctx。上下文可以是 Any 结构体或类实例,它会内部以弱引用的形式包裹,以防止循环引用。然后,上下文被可选地传递到超时闭包。

代码示例

Kron.idle(1, key:"updateUI"){ (key,ctx) in
            //
}
let context = 'userTap'
Kron.idle(1, key:"updateUI", ctx: context){ (key,ctx) in
       print(ctx as! String) // userTap
}
//self.currentModel should be an AnyObject instance
Kron.idle(1, key:self.currentModel){ (key,ctx) in
            expectation2.fulfill()
}

文档

使用jazzy生成且托管在GitHub的文档,请在此查看

文档

CocoaPods

如果您使用[CocoaPods][]来管理依赖项,只需将Kron添加到您的Podfile

pod 'kron', '~> 1.2'

更多示例

请查看测试单元以获取全面的实现示例。

在所有情况下,只需通过调用相同的键调用Kron即可重置定时器。(见下文静态 vs 实例以了解更多关于静态键空间的信息)

  1. 空闲定时器
Kron.idle(1, key:"keyStrokes"){ (key,ctx) in
      print("performed after 1 second of inactivity")
}
  1. 防抖器
Kron.debounce(1, key:"Scroll"){ (key,ctx) in
      print("performed immediately and again no sooner than 1 second")
}
  1. 防抖和执行最后
Kron.debounceLast(1, key:"Scroll"){ (key,ctx) in
      print("performed immediately and again no sooner than 1 second")
      print("also performs the last call after 1 second of inactivity")
}
  1. 看门狗
Kron.wachtDog(10, key:"ApiResponse"){ (key,ctx) in
      print("performed  after 10 seconds unless canceled")

}

...

// Called somewhere else to abort the timeOut
Kron.wachtDogCancel("ApiResponse")

静态 vs 实例

您可以使用提供的静态函数。内部 Kron 管理了4个单例以防止不同模式之间的键冲突

//Debouncer
Kron.debounce

//Debouncing Last
Kron.debounceLast

//Idle
Kron.idle

//Watchdog
Kron.watchdog

您还可以选择实例化 Kron 以在该实例中管理自己的键空间。

let myKron = Kron()
myKron( ...

有疑问?

如果您需要任何帮助,请访问我们的GitHub问题表。如果您在档案中找不到任何解决方案,请随时提交问题。

您也可以通过

[email protected]

关于

克朗(Kron)最初由哈桑·古伊奥斯提亚古伊(Hassan Uriostegui)构建,是一个Objective-C框架。现在作为基于Swift的开源框架在伊欧弗卢克斯(Eonflux)集体下发布。查看我们的其他项目并加入我们的创新之流(eon flux of innovation)