session-ios/Signal/src/util/Promise+retainUntilComplete.swift
2017-05-04 15:15:14 -04:00

20 lines
640 B
Swift

//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
import PromiseKit
public extension Promise {
/**
* Sometimes there isn't a straight forward candidate to retain a promise, in that case we tell the
* promise to self retain, until it completes to avoid the risk it's GC'd before completion.
*/
func retainUntilComplete() {
// Unfortunately, there is (currently) no way to surpress the
// compiler warning: "Variable 'retainCycle' was written to, but never read"
var retainCycle: Promise<T>? = self
self.always {
retainCycle = nil
}
}
}