Sources/NeedleFoundation/Pluginized/PluginizedScopeLifecycle.swift (12 lines of code) (raw):

// // Copyright (c) 2018. Uber Technologies // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // import Foundation /// The lifecycle of a pluginized scope. This represents the lifecycle of /// the scope that utilizes a pluginized DI component. In the case of an /// iOS MVC application, the lifecycle events should be mapped to the view /// controller lifecycles. public enum PluginizedScopeLifecycle { /// The active lifecycle. This can be represented as a view controller's /// `viewDidAppear` lifecycle. case active /// The inactivate lifecycle. This can be represented as a view /// controller's `viewDidDisappear` lifecycle. case inactive /// The deinit lifecycle. This can be represented as a view controller's /// `deinit` lifecycle. case `deinit` } /// The object that allows an observer to be disposed, thereby ending the /// observation. public protocol ObserverDisposable: AnyObject { /// Dispose the observation. func dispose() } /// The observable of the lifecycle events of a pluginized scope. public protocol PluginizedScopeLifecycleObservable: AnyObject { /// Observe the lifecycle events with given observer. /// /// - parameter observer: The observer closure to invoke when the lifecycle /// changes. /// - returns: The disposable object that can end the observation. func observe(_ observer: @escaping (PluginizedScopeLifecycle) -> Void) -> ObserverDisposable }