Jelajahi Sumber

Make SourceIdentifier a type for namespacing

onevcat 7 tahun lalu
induk
melakukan
e66857615c

+ 3 - 3
Sources/Extensions/ImageView+Kingfisher.swift

@@ -59,7 +59,7 @@ extension KingfisherWrapper where Base: ImageView {
         let maybeIndicator = indicator
         let maybeIndicator = indicator
         maybeIndicator?.startAnimatingView()
         maybeIndicator?.startAnimatingView()
 
 
-        let issuedIdentifier = issueSourceIdentifier()
+        let issuedIdentifier = SourceIdentifier.next()
         mutatingSelf.taskIdentifier = issuedIdentifier
         mutatingSelf.taskIdentifier = issuedIdentifier
 
 
         if base.shouldPreloadAllAnimation() {
         if base.shouldPreloadAllAnimation() {
@@ -210,9 +210,9 @@ private var imageTaskKey: Void?
 
 
 extension KingfisherWrapper where Base: ImageView {
 extension KingfisherWrapper where Base: ImageView {
 
 
-    public private(set) var taskIdentifier: SourceIdentifier? {
+    public private(set) var taskIdentifier: SourceIdentifier.Value? {
         get {
         get {
-            let box: Box<SourceIdentifier>? = getAssociatedObject(base, &taskIdentifierKey)
+            let box: Box<SourceIdentifier.Value>? = getAssociatedObject(base, &taskIdentifierKey)
             return box?.value
             return box?.value
         }
         }
         set {
         set {

+ 6 - 6
Sources/Extensions/NSButton+Kingfisher.swift

@@ -50,7 +50,7 @@ extension KingfisherWrapper where Base: NSButton {
             base.image = placeholder
             base.image = placeholder
         }
         }
 
 
-        let issuedIdentifier = issueSourceIdentifier()
+        let issuedIdentifier = SourceIdentifier.next()
         mutatingSelf.taskIdentifier = issuedIdentifier
         mutatingSelf.taskIdentifier = issuedIdentifier
 
 
         let task = KingfisherManager.shared.retrieveImage(
         let task = KingfisherManager.shared.retrieveImage(
@@ -148,7 +148,7 @@ extension KingfisherWrapper where Base: NSButton {
             base.alternateImage = placeholder
             base.alternateImage = placeholder
         }
         }
 
 
-        let issuedIdentifier = issueSourceIdentifier()
+        let issuedIdentifier = SourceIdentifier.next()
         mutatingSelf.alternateTaskIdentifier = issuedIdentifier
         mutatingSelf.alternateTaskIdentifier = issuedIdentifier
         let task = KingfisherManager.shared.retrieveImage(
         let task = KingfisherManager.shared.retrieveImage(
             with: source,
             with: source,
@@ -235,9 +235,9 @@ private var alternateImageTaskKey: Void?
 
 
 extension KingfisherWrapper where Base: NSButton {
 extension KingfisherWrapper where Base: NSButton {
 
 
-    public private(set) var taskIdentifier: SourceIdentifier? {
+    public private(set) var taskIdentifier: SourceIdentifier.Value? {
         get {
         get {
-            let box: Box<SourceIdentifier>? = getAssociatedObject(base, &taskIdentifierKey)
+            let box: Box<SourceIdentifier.Value>? = getAssociatedObject(base, &taskIdentifierKey)
             return box?.value
             return box?.value
         }
         }
         set {
         set {
@@ -251,9 +251,9 @@ extension KingfisherWrapper where Base: NSButton {
         set { setRetainedAssociatedObject(base, &imageTaskKey, newValue)}
         set { setRetainedAssociatedObject(base, &imageTaskKey, newValue)}
     }
     }
 
 
-    public private(set) var alternateTaskIdentifier: SourceIdentifier? {
+    public private(set) var alternateTaskIdentifier: SourceIdentifier.Value? {
         get {
         get {
-            let box: Box<SourceIdentifier>? = getAssociatedObject(base, &alternateTaskIdentifierKey)
+            let box: Box<SourceIdentifier.Value>? = getAssociatedObject(base, &alternateTaskIdentifierKey)
             return box?.value
             return box?.value
         }
         }
         set {
         set {

+ 8 - 8
Sources/Extensions/UIButton+Kingfisher.swift

@@ -50,7 +50,7 @@ extension KingfisherWrapper where Base: UIButton {
         }
         }
         
         
         var mutatingSelf = self
         var mutatingSelf = self
-        let issuedTaskIdentifier = issueSourceIdentifier()
+        let issuedTaskIdentifier = SourceIdentifier.next()
         setTaskIdentifier(issuedTaskIdentifier, for: state)
         setTaskIdentifier(issuedTaskIdentifier, for: state)
         let task = KingfisherManager.shared.retrieveImage(
         let task = KingfisherManager.shared.retrieveImage(
             with: source,
             with: source,
@@ -150,7 +150,7 @@ extension KingfisherWrapper where Base: UIButton {
         }
         }
         
         
         var mutatingSelf = self
         var mutatingSelf = self
-        let issuedTaskIdentifier = issueSourceIdentifier()
+        let issuedTaskIdentifier = SourceIdentifier.next()
         setBackgroundTaskIdentifier(issuedTaskIdentifier, for: state)
         setBackgroundTaskIdentifier(issuedTaskIdentifier, for: state)
         let task = KingfisherManager.shared.retrieveImage(
         let task = KingfisherManager.shared.retrieveImage(
             with: source,
             with: source,
@@ -238,11 +238,11 @@ private var imageTaskKey: Void?
 
 
 extension KingfisherWrapper where Base: UIButton {
 extension KingfisherWrapper where Base: UIButton {
 
 
-    public func taskIdentifier(for state: UIControl.State) -> SourceIdentifier? {
-        return (taskIdentifierInfo[NSNumber(value:state.rawValue)] as? Box<SourceIdentifier>)?.value
+    public func taskIdentifier(for state: UIControl.State) -> SourceIdentifier.Value? {
+        return (taskIdentifierInfo[NSNumber(value:state.rawValue)] as? Box<SourceIdentifier.Value>)?.value
     }
     }
 
 
-    private func setTaskIdentifier(_ identifier: SourceIdentifier?, for state: UIControl.State) {
+    private func setTaskIdentifier(_ identifier: SourceIdentifier.Value?, for state: UIControl.State) {
         taskIdentifierInfo[NSNumber(value:state.rawValue)] = identifier.map { Box($0) }
         taskIdentifierInfo[NSNumber(value:state.rawValue)] = identifier.map { Box($0) }
     }
     }
     
     
@@ -273,11 +273,11 @@ private var backgroundImageTaskKey: Void?
 
 
 extension KingfisherWrapper where Base: UIButton {
 extension KingfisherWrapper where Base: UIButton {
 
 
-    public func backgroundTaskIdentifier(for state: UIControl.State) -> SourceIdentifier? {
-        return (backgroundTaskIdentifierInfo[NSNumber(value:state.rawValue)] as? Box<SourceIdentifier>)?.value
+    public func backgroundTaskIdentifier(for state: UIControl.State) -> SourceIdentifier.Value? {
+        return (backgroundTaskIdentifierInfo[NSNumber(value:state.rawValue)] as? Box<SourceIdentifier.Value>)?.value
     }
     }
     
     
-    private func setBackgroundTaskIdentifier(_ identifier: SourceIdentifier?, for state: UIControl.State) {
+    private func setBackgroundTaskIdentifier(_ identifier: SourceIdentifier.Value?, for state: UIControl.State) {
         backgroundTaskIdentifierInfo[NSNumber(value:state.rawValue)] = identifier.map { Box($0) }
         backgroundTaskIdentifierInfo[NSNumber(value:state.rawValue)] = identifier.map { Box($0) }
     }
     }
     
     

+ 3 - 3
Sources/Extensions/WKInterfaceImage+Kingfisher.swift

@@ -49,7 +49,7 @@ extension KingfisherWrapper where Base: WKInterfaceImage {
             base.setImage(placeholder)
             base.setImage(placeholder)
         }
         }
         
         
-        let issuedTaskIdentifier = issueSourceIdentifier()
+        let issuedTaskIdentifier = SourceIdentifier.next()
         mutatingSelf.taskIdentifier = issuedTaskIdentifier
         mutatingSelf.taskIdentifier = issuedTaskIdentifier
         let task = KingfisherManager.shared.retrieveImage(
         let task = KingfisherManager.shared.retrieveImage(
             with: source,
             with: source,
@@ -134,9 +134,9 @@ private var imageTaskKey: Void?
 
 
 extension KingfisherWrapper where Base: WKInterfaceImage {
 extension KingfisherWrapper where Base: WKInterfaceImage {
     
     
-    public private(set) var taskIdentifier: SourceIdentifier? {
+    public private(set) var taskIdentifier: SourceIdentifier.Value? {
         get {
         get {
-            let box: Box<SourceIdentifier>? = getAssociatedObject(base, &taskIdentifierKey)
+            let box: Box<SourceIdentifier.Value>? = getAssociatedObject(base, &taskIdentifierKey)
             return box?.value
             return box?.value
         }
         }
         set {
         set {

+ 8 - 5
Sources/General/ImageSource/Source.swift

@@ -26,11 +26,14 @@
 
 
 import Foundation
 import Foundation
 
 
-public typealias SourceIdentifier = UInt
-var currentIdentifier: SourceIdentifier = 0
-func issueSourceIdentifier() -> SourceIdentifier {
-    currentIdentifier += 1
-    return currentIdentifier
+/// Represents the source task identifier when setting an image to a view with extension methods.
+public enum SourceIdentifier {
+    public typealias Value = UInt
+    static var current: Value = 0
+    static func next() -> Value {
+        current += 1
+        return current
+    }
 }
 }
 
 
 public enum Source {
 public enum Source {

+ 2 - 2
Tests/KingfisherTests/ImageViewExtensionTests.swift

@@ -80,7 +80,7 @@ class ImageViewExtensionTests: XCTestCase {
             let value = result.value!
             let value = result.value!
             XCTAssertTrue(value.image.renderEqual(to: testImage))
             XCTAssertTrue(value.image.renderEqual(to: testImage))
             XCTAssertTrue(self.imageView.image!.renderEqual(to: testImage))
             XCTAssertTrue(self.imageView.image!.renderEqual(to: testImage))
-            XCTAssertEqual(self.imageView.kf.taskIdentifier, issueSourceIdentifier() - 1)
+            XCTAssertEqual(self.imageView.kf.taskIdentifier, SourceIdentifier.current)
             
             
             XCTAssertEqual(value.cacheType, .none)
             XCTAssertEqual(value.cacheType, .none)
             XCTAssertTrue(Thread.isMainThread)
             XCTAssertTrue(Thread.isMainThread)
@@ -127,7 +127,7 @@ class ImageViewExtensionTests: XCTestCase {
             let value = result.value!
             let value = result.value!
             XCTAssertTrue(value.image.renderEqual(to: testImage))
             XCTAssertTrue(value.image.renderEqual(to: testImage))
             XCTAssertTrue(self.imageView.image!.renderEqual(to: testImage))
             XCTAssertTrue(self.imageView.image!.renderEqual(to: testImage))
-            XCTAssertEqual(self.imageView.kf.taskIdentifier, issueSourceIdentifier() - 1)
+            XCTAssertEqual(self.imageView.kf.taskIdentifier, SourceIdentifier.current)
 
 
             XCTAssertEqual(value.cacheType, .none)
             XCTAssertEqual(value.cacheType, .none)
             XCTAssertTrue(Thread.isMainThread)
             XCTAssertTrue(Thread.isMainThread)

+ 2 - 2
Tests/KingfisherTests/NSButtonExtensionTests.swift

@@ -76,7 +76,7 @@ class NSButtonExtensionTests: XCTestCase {
             XCTAssertNotNil(image)
             XCTAssertNotNil(image)
             XCTAssertTrue(image!.renderEqual(to: testImage))
             XCTAssertTrue(image!.renderEqual(to: testImage))
             XCTAssertTrue(self.button.image!.renderEqual(to: testImage))
             XCTAssertTrue(self.button.image!.renderEqual(to: testImage))
-            XCTAssertEqual(self.button.kf.taskIdentifier, issueSourceIdentifier() - 1)
+            XCTAssertEqual(self.button.kf.taskIdentifier, SourceIdentifier.current)
             XCTAssertEqual(result.value!.cacheType, .none)
             XCTAssertEqual(result.value!.cacheType, .none)
             
             
             exp.fulfill()
             exp.fulfill()
@@ -98,7 +98,7 @@ class NSButtonExtensionTests: XCTestCase {
             XCTAssertNotNil(image)
             XCTAssertNotNil(image)
             XCTAssertTrue(image!.renderEqual(to: testImage))
             XCTAssertTrue(image!.renderEqual(to: testImage))
             XCTAssertTrue(self.button.alternateImage!.renderEqual(to: testImage))
             XCTAssertTrue(self.button.alternateImage!.renderEqual(to: testImage))
-            XCTAssertEqual(self.button.kf.alternateTaskIdentifier, issueSourceIdentifier() - 1)
+            XCTAssertEqual(self.button.kf.alternateTaskIdentifier, SourceIdentifier.current)
             XCTAssertEqual(result.value!.cacheType, .none)
             XCTAssertEqual(result.value!.cacheType, .none)
             
             
             exp.fulfill()
             exp.fulfill()

+ 1 - 2
Tests/KingfisherTests/UIButtonExtensionTests.swift

@@ -78,8 +78,7 @@ class UIButtonExtensionTests: XCTestCase {
             XCTAssertTrue(image!.renderEqual(to: testImage))
             XCTAssertTrue(image!.renderEqual(to: testImage))
             XCTAssertTrue(self.button.image(for: .normal)!.renderEqual(to: testImage))
             XCTAssertTrue(self.button.image(for: .normal)!.renderEqual(to: testImage))
             
             
-            let issuedTaskIdentifier = issueSourceIdentifier()
-            XCTAssertEqual(self.button.kf.taskIdentifier(for: .normal), issuedTaskIdentifier - 1)
+            XCTAssertEqual(self.button.kf.taskIdentifier(for: .normal), SourceIdentifier.current)
             XCTAssertEqual(result.value!.cacheType, .none)
             XCTAssertEqual(result.value!.cacheType, .none)
             
             
             exp.fulfill()
             exp.fulfill()