氧同位素1.3.0

氧同位素 1.3.0

Bas van Kuijck 维护。



  • 编写者:
  • Bas van Kuijck

Oganesson

氧同位素是 E-sites iOS Suite 的一部分。


一个小巧的 Swift 辅助类,用于使用对象池

forthebadge forthebadge

Platform CocoaPods Compatible Carthage compatible Travis-ci

兼容

  • Swift 5
  • Xcode 11

安装

CocoaPods

pod 'Oganesson'

SwiftPM

 .package(url: "https://github.com/e-sites/Oganesson", .branch("master"))

使用方法

初始化

class SomeView: UIView, ObjectPoolCompatible {
    required convenience init() {
        self.init(frame: CGRect(x: 0, y: 0, width: 100, height: 100)
    }
}

var objectPool: ObjectPool<SomeView>!

override func viewDidLoad() {
   super.viewDidLoad()
    
   objectPool = ObjectPool<SomeView>(size: 20, policy: .dynamic) { obj in
       obj.backgroundColor = UIColor.red
   }
   
   objectPool.onAcquire { [view] obj in 
       DispatchQueue.main.async {
          view.addSubview(obj)
       }
   }
   
   objectPool.onRelease { obj in 
       DispatchQueue.main.async {
           // It's safe to remove the object from its superview,
           // since `ObjectPool` will keep its (memory) retained.
           obj.removeFromSuperview()
      }
   }
}

从池中获取对象

do {
    let object = try objectPool.acquire()
    object.backgroundColor = UIColor.orange
} catch let error {
    print("Error acquiring object: \(error)")
}

完成对象的使用

objectPool.release(object)

策略

  • dynamic:如果池被排空,则使用+1填充池
  • static:池大小固定。如果池被排空,则抛出Error.drained