update pod
This commit is contained in:
Binary file not shown.
@@ -254,7 +254,7 @@ PODS:
|
|||||||
- "DDCategoryKit_Private/UIImage+DDCategory"
|
- "DDCategoryKit_Private/UIImage+DDCategory"
|
||||||
- Kingfisher
|
- Kingfisher
|
||||||
- SnapKit
|
- SnapKit
|
||||||
- DDTimerSwiftKit_Private (0.1.1):
|
- DDTimerSwiftKit_Private (0.1.3):
|
||||||
- DDLogKit_Private/SwiftLog
|
- DDLogKit_Private/SwiftLog
|
||||||
- DDToastKit_Private (0.1.2)
|
- DDToastKit_Private (0.1.2)
|
||||||
- DDUtilsSwiftKit_Private (0.1.0):
|
- DDUtilsSwiftKit_Private (0.1.0):
|
||||||
@@ -397,7 +397,7 @@ SPEC CHECKSUMS:
|
|||||||
DDMAMapKit_Private: fda2942ba7a3b7da4d440e59a89db9fd6708d842
|
DDMAMapKit_Private: fda2942ba7a3b7da4d440e59a89db9fd6708d842
|
||||||
DDNetworkingOfAlamofireKit_Private: d65c96f99bc59311d374e7b7a7e8a9e042d9b5ea
|
DDNetworkingOfAlamofireKit_Private: d65c96f99bc59311d374e7b7a7e8a9e042d9b5ea
|
||||||
DDProgressHUDKit_Private: 1e219062ddeb7801a4bb13b367efa1f3fbf17f1e
|
DDProgressHUDKit_Private: 1e219062ddeb7801a4bb13b367efa1f3fbf17f1e
|
||||||
DDTimerSwiftKit_Private: ff34ed08c057588afa4e4337e0d08124c00dbcb3
|
DDTimerSwiftKit_Private: e9c55d0d9d60de4965b369b342bb903c85542cff
|
||||||
DDToastKit_Private: b6ae3709d110cadca503a037419f3709d1755256
|
DDToastKit_Private: b6ae3709d110cadca503a037419f3709d1755256
|
||||||
DDUtilsSwiftKit_Private: a0bb323c6bac3bf68e94f95d10fd9e3529fb773d
|
DDUtilsSwiftKit_Private: a0bb323c6bac3bf68e94f95d10fd9e3529fb773d
|
||||||
DDWebImageKit_Private: b905111547e44626773b729bae9030403a9a0c76
|
DDWebImageKit_Private: b905111547e44626773b729bae9030403a9a0c76
|
||||||
|
|||||||
@@ -13,7 +13,9 @@ open class GCDTimer {
|
|||||||
|
|
||||||
private var timerSources : [GCDTimerAbstract] = []
|
private var timerSources : [GCDTimerAbstract] = []
|
||||||
|
|
||||||
public var canceledCompletionHandler:(() -> Void)? // 主动取消定时器时,由于定时器当前可能存在任务,所以要等任务结束后再进行相应的操作
|
private var canceledCompletionHandler:(() -> Void)? // 主动取消定时器时,由于定时器当前可能存在任务,所以要等任务结束后再进行相应的操作
|
||||||
|
|
||||||
|
private var removeQueue = DispatchQueue(label: "GCDTimerRemoveQueue") // 移除定时器的时候,由于存在多个定时器同时移除的情况,定时器本身是异步操作的,所以从timerSources中移除GCDTimerAbstract的操作也是异步的,这就会导致数组在遍历的同时也在从数组中删除项目,会有问题,所以把删除的操作放在同步队列中
|
||||||
|
|
||||||
/// 取消定时器时,定时器如果有正在执行的任务,会先将当前正在执行的任务执行完成才会取消成功,因此如果需要添加相同名字的定时器,需要确保之前同名的定时器已经被彻底取消了。
|
/// 取消定时器时,定时器如果有正在执行的任务,会先将当前正在执行的任务执行完成才会取消成功,因此如果需要添加相同名字的定时器,需要确保之前同名的定时器已经被彻底取消了。
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
@@ -37,22 +39,24 @@ open class GCDTimer {
|
|||||||
repeatHandler()
|
repeatHandler()
|
||||||
} cancelHandler: {[weak self] timerName in
|
} cancelHandler: {[weak self] timerName in
|
||||||
// 移除定时器
|
// 移除定时器
|
||||||
self?.removeGCDTimer(named: timerName)
|
self?.removeGCDTimer(named: timerName,removeComletionHandler: {[weak self] in
|
||||||
// 添加定时器处执行取消操作
|
// 添加定时器处执行取消操作
|
||||||
if let cancelHandler {
|
if let cancelHandler {
|
||||||
cancelHandler()
|
cancelHandler()
|
||||||
}
|
}
|
||||||
// 取消定时器处执行取消操作
|
// 取消定时器处执行取消操作
|
||||||
if let canceledCompletionHandler = self?.canceledCompletionHandler {
|
if let canceledCompletionHandler = self?.canceledCompletionHandler {
|
||||||
canceledCompletionHandler()
|
canceledCompletionHandler()
|
||||||
}
|
}
|
||||||
|
})
|
||||||
} completionHandler: {[weak self] timerName in
|
} completionHandler: {[weak self] timerName in
|
||||||
// 移除定时器
|
// 移除定时器
|
||||||
self?.removeGCDTimer(named: timerName)
|
self?.removeGCDTimer(named: timerName,removeComletionHandler: {
|
||||||
// 执行结束操作
|
// 执行结束操作
|
||||||
if let completionHandler {
|
if let completionHandler {
|
||||||
completionHandler()
|
completionHandler()
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
timerSources.append(gcdTimerA)
|
timerSources.append(gcdTimerA)
|
||||||
@@ -67,14 +71,19 @@ open class GCDTimer {
|
|||||||
/// - timerName: 定时器名字
|
/// - timerName: 定时器名字
|
||||||
/// - canceledCompletionHandler: 取消定时器后的操作
|
/// - canceledCompletionHandler: 取消定时器后的操作
|
||||||
public func cancelGCDTimer(named timerName:String,canceledCompletionHandler:(() -> Void)? = nil) {
|
public func cancelGCDTimer(named timerName:String,canceledCompletionHandler:(() -> Void)? = nil) {
|
||||||
|
self.canceledCompletionHandler = canceledCompletionHandler
|
||||||
|
|
||||||
// 当timerSources中包含定时器时,取消定时器
|
// 当timerSources中包含定时器时,取消定时器
|
||||||
if let gcdTimerA = timerSources.first(where: { gcdTimerA in
|
if let gcdTimerA = timerSources.first(where: { gcdTimerA in
|
||||||
gcdTimerA.timerName == timerName
|
gcdTimerA.timerName == timerName
|
||||||
}) {
|
}) {
|
||||||
self.canceledCompletionHandler = canceledCompletionHandler
|
|
||||||
gcdTimerA.cancelGCDTimer(isCanceledManually: true)
|
gcdTimerA.cancelGCDTimer(isCanceledManually: true)
|
||||||
}else{
|
}else{
|
||||||
DDLog(message: "定时器\'\(timerName)\'取消失败,未包含")
|
if let canceledCompletionHandler {
|
||||||
|
canceledCompletionHandler()
|
||||||
|
}
|
||||||
|
// 打印剩余的定时器
|
||||||
|
logTimerName()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,20 +96,27 @@ open class GCDTimer {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func removeGCDTimer(named timerName:String) {
|
func removeGCDTimer(named timerName:String,removeComletionHandler:@escaping () -> Void) {
|
||||||
// 移除定时器的抽象类
|
removeQueue.sync {[weak self] in
|
||||||
timerSources.removeAll { gcdTimerA in
|
// 移除定时器的抽象类
|
||||||
gcdTimerA.timerName == timerName
|
if let index = self?.timerSources.firstIndex(where: { gcdTimerA in
|
||||||
|
gcdTimerA.timerName == timerName
|
||||||
|
}) {
|
||||||
|
self?.timerSources.remove(at: index)
|
||||||
|
DDLog(message: "定时器\'\(timerName)\'移除成功")
|
||||||
|
}
|
||||||
|
// 打印剩余的定时器
|
||||||
|
self?.logTimerName()
|
||||||
}
|
}
|
||||||
DDLog(message: "定时器\'\(timerName)\'移除成功")
|
|
||||||
// 打印剩余的定时器
|
|
||||||
logTimerName()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func logTimerName() {
|
func logTimerName() {
|
||||||
|
var array : [String] = []
|
||||||
for gcdTimerA in timerSources {
|
for gcdTimerA in timerSources {
|
||||||
DDLog(message:("剩余定时器:\'\( gcdTimerA.timerName)\'"))
|
array.append(gcdTimerA.timerName)
|
||||||
}
|
}
|
||||||
|
DDLog(message:("剩余定时器:\'\(array)\'"))
|
||||||
|
array.removeAll()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,8 +153,6 @@ class GCDTimerAbstract {
|
|||||||
if let cancelHandler,let timerName = self?.timerName {
|
if let cancelHandler,let timerName = self?.timerName {
|
||||||
cancelHandler(timerName)
|
cancelHandler(timerName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定时器中途被取消时,在取消完成后
|
|
||||||
}else{
|
}else{
|
||||||
// 定时器结束后执行
|
// 定时器结束后执行
|
||||||
if let completionHandler,let timerName = self?.timerName {
|
if let completionHandler,let timerName = self?.timerName {
|
||||||
|
|||||||
4
Pods/Manifest.lock
generated
4
Pods/Manifest.lock
generated
@@ -254,7 +254,7 @@ PODS:
|
|||||||
- "DDCategoryKit_Private/UIImage+DDCategory"
|
- "DDCategoryKit_Private/UIImage+DDCategory"
|
||||||
- Kingfisher
|
- Kingfisher
|
||||||
- SnapKit
|
- SnapKit
|
||||||
- DDTimerSwiftKit_Private (0.1.1):
|
- DDTimerSwiftKit_Private (0.1.3):
|
||||||
- DDLogKit_Private/SwiftLog
|
- DDLogKit_Private/SwiftLog
|
||||||
- DDToastKit_Private (0.1.2)
|
- DDToastKit_Private (0.1.2)
|
||||||
- DDUtilsSwiftKit_Private (0.1.0):
|
- DDUtilsSwiftKit_Private (0.1.0):
|
||||||
@@ -397,7 +397,7 @@ SPEC CHECKSUMS:
|
|||||||
DDMAMapKit_Private: fda2942ba7a3b7da4d440e59a89db9fd6708d842
|
DDMAMapKit_Private: fda2942ba7a3b7da4d440e59a89db9fd6708d842
|
||||||
DDNetworkingOfAlamofireKit_Private: d65c96f99bc59311d374e7b7a7e8a9e042d9b5ea
|
DDNetworkingOfAlamofireKit_Private: d65c96f99bc59311d374e7b7a7e8a9e042d9b5ea
|
||||||
DDProgressHUDKit_Private: 1e219062ddeb7801a4bb13b367efa1f3fbf17f1e
|
DDProgressHUDKit_Private: 1e219062ddeb7801a4bb13b367efa1f3fbf17f1e
|
||||||
DDTimerSwiftKit_Private: ff34ed08c057588afa4e4337e0d08124c00dbcb3
|
DDTimerSwiftKit_Private: e9c55d0d9d60de4965b369b342bb903c85542cff
|
||||||
DDToastKit_Private: b6ae3709d110cadca503a037419f3709d1755256
|
DDToastKit_Private: b6ae3709d110cadca503a037419f3709d1755256
|
||||||
DDUtilsSwiftKit_Private: a0bb323c6bac3bf68e94f95d10fd9e3529fb773d
|
DDUtilsSwiftKit_Private: a0bb323c6bac3bf68e94f95d10fd9e3529fb773d
|
||||||
DDWebImageKit_Private: b905111547e44626773b729bae9030403a9a0c76
|
DDWebImageKit_Private: b905111547e44626773b729bae9030403a9a0c76
|
||||||
|
|||||||
Reference in New Issue
Block a user