session-ios/Signal/src/util/Weak.swift
Michael Kirk 87ed662116 Persist AudioService if CallViewController is dismissed
...in response to CR, move the AudioService off of the CallViewController

Adopt multiple observer pattern vs. a singular delegate. Doing so
required implementing some machinery to address the ARC (see:
Weak.swift)

// FREEBIE
2017-01-24 14:13:29 -05:00

30 lines
643 B
Swift

//
// Copyright © 2017 Open Whisper Systems. All rights reserved.
//
/**
* Container for a weakly referenced object.
*
* Only use this for |T| with reference-semantic entities
* e.g. inheriting from AnyObject or Class-only protocols, but not structs or enums.
*
*
* Based on https://devforums.apple.com/message/981472#981472, but also supports class-only protocols
*/
struct Weak<T> {
private weak var _value: AnyObject?
var value: T? {
get {
return _value as? T
}
set {
_value = newValue as AnyObject
}
}
init(value: T) {
self.value = value
}
}