Classes

The following classes are available globally.

  • Block based timer that uses Grand Central Dispatch internally.

    final class MyClass {
       private let timer: BlockTimer
    
       init() {
           self.timer = .scheduled(timeInterval: 1.0, repeats: true) { _ in
               // do something every 1 second
           }
       }
    }
    
    See more

    Declaration

    Swift

    public final class BlockTimer : ScopeFunctions
  • Many readers, single writer generic lock.

    let myClass = ...
    let lock = ReadWriteLock(myClass)
    
    lock.mutate {
       // do stuff with $0 to update myClass
    }
    
    See more

    Declaration

    Swift

    public final class ReadWriteLock<T>
  • Allows weakly reference another object.

    final class MyClass {
       // MARK: - Private Properties
       private let weakReference: WeakReference<MyOtherClass>
    
       // MARK: Public Functions
       func foo() {
           guard let reference = self.weakReference.value else {
               return
           }
           // do something with reference which is non-nil
       }
    
       // MARK: Initializers
       init(myOtherClass: MyOtherClass) {
           self.weakReference = WeakReference(myOtherClass)
       }
    }
    
    See more

    Declaration

    Swift

    public final class WeakReference<T> : NSObject