mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
87ed662116
...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
29 lines
643 B
Swift
29 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
|
|
}
|
|
}
|