session-ios/SignalMessaging/utils/Weak.swift
2018-02-16 14:00:15 -08:00

28 lines
675 B
Swift

//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
/**
* Container for a weakly referenced object.
*
* Only use this for |T| with reference-semantic entities
* That is - <T> should inherit 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
*/
public struct Weak<T> {
private weak var _value: AnyObject?
public var value: T? {
get {
return _value as? T
}
set {
_value = newValue as AnyObject
}
}
public init(value: T) {
self.value = value
}
}