Skip to content

Instantly share code, notes, and snippets.

@smic
Created March 6, 2016 07:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save smic/b284e3089c892cdd601e to your computer and use it in GitHub Desktop.
Save smic/b284e3089c892cdd601e to your computer and use it in GitHub Desktop.
import Cocoa
class TestObject {
init() {
print("Init \(self)")
}
deinit {
print("Deinit \(self)")
}
}
struct WeakReference<T: AnyObject> {
weak var reference: T?
}
class Object {
private var _objects: [WeakReference<TestObject>] = []
var objects: [TestObject] {
set(newValue) { self._objects = newValue.map({ WeakReference(reference: $0) }) }
get { return self._objects.flatMap({ $0.reference }) }
}
}
let object = Object()
var testObject: TestObject? = TestObject()
object.objects = [testObject!]
print("BEFORE: \(object.objects)")
testObject = nil
print("AFTER: \(object.objects)")
object.objects = []
print("Finish")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment