import UIKit public class NetworkOperation { init(application: UIApplication) { self.application = application; } let application : UIApplication public func started() { let numOperationsRunning = OSAtomicIncrement32(&HackyValueHolder.numNetworkingOperations) if numOperationsRunning == 1 { // We were the first operation to start, so we have control of activating the indicator application.networkActivityIndicatorVisible = true } } public func completed() { let numOperationsRemaining = OSAtomicDecrement32(&HackyValueHolder.numNetworkingOperations) if numOperationsRemaining == 0 { application.networkActivityIndicatorVisible = false } } struct HackyValueHolder { static var numNetworkingOperations : Int32 = 0 } } extension UIApplication { public func createNetworkOperation() -> NetworkOperation { return NetworkOperation(application: self) } }