RunIt 0.3.1

RunIt 0.3.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2017年6月
SwiftSwift 版本3.0
SPM支持 SPM

Alex Nikishin 维护。



RunIt 0.3.1

  • 作者:
  • Nikishin Alexander

#RunIt

RunIt 是一个超级轻量级但功能强大的系统组件管理器。它可以帮助您从代码中删除不必要的单例使用。RunIt 具有易于使用的界面,并为您提供了扩展以满足个人需求的机会。

特性

  • [x] 线程安全的组件访问
  • [x] 泛型获取器
  • [x] 可扩展性
  • [x] 仅按类型移除组件
  • [x] 支持 NSOperation (见 NSOperation 支持)
  • [ ] 通过组件对象本身移除组件

入门指南

包含 示例应用 以演示 RunIt 的功能。

基本用法

例如,假设您有一个使用用户位置并处理推送通知的应用程序。您知道只有在用户授予访问权限的情况下这两项组件才可用。因此,如果没有访问权限,则不需要启动和存储单例中的位置服务。

// Somewhere in app initialization proccess
if locationIsAvailable {

    let locationService = LocationComponent()
    RunIt.add(locationService)
}
if APNSIsAvailable {
    
    let APNSService = APNSComponent()
    RunIt.add(APNSService)
    // or
  RunIt.add(component: APNSService, forKey: "APNSService")
}

稍后,在您的代码的任何地方,您都可以通过泛型获取器访问您的组件。

let apnsService: LocationComponent? = RunIt.get()
let apnsService: APNSComponent? = RunIt.get(componentForKey: "APNSService")

不需要组件 anymore? Easy

RunIt.remove(component: component)
RunIt.remove(componentForKey: "APNSService")

RunIt 提供的所有动作都是线程安全的。

运行组件

您的组件可以遵循 Runnable 协议,并且当在 addremove 操作上时,RunIt 将自动运行和停止您的组件。此外,run 将在单独的队列(默认为后台)上执行。您可以通过标志和定制 runOperationQueue 控制此行为。

RunIt.runComponentsOnAdd = false
RunIt.stopComponentOnRemove = false
RunIt.syncQueue = dispatch_get_main_queue() //Make your compoents run in main thread
RunIt.runOperationQueue.maxConcurrentOperationCount = 2

轻松控制组件的运行队列或其优先级,只需在您的组件中创建一个自定义队列

class SomeComponent: Runnable {
    
    private(set) public var isRunning: Bool
    public var runQueue: dispatch_queue_t? = dispatch_queue_create("YourQueue", DISPATCH_QUEUE_CONCURRENT)
    public var priority: NSOperationQueuePriority = .High

    ...
}

NSOperation 支持

您随时可以向 RunIt.runOperationQueue 添加自定义 NSOperation(s),但您需要知道这些操作不会吞噬您组件的运行进度。因此,在大量 NSOperation 对象的情况下,wise 以比您使用的组件较低优先级添加它们。

安装

手动

克隆仓库并将 Sources 文件夹中的文件拖放到您的 Xcode 项目中。

要求

  • Swift 3.0
  • iOS 8.0+
  • Xcode 7.0+

软件许可

RunIt采用MIT许可协议。有关详细信息,请参阅LICENSE文件。