> On Mar 31, 2016, at 3:58 PM, Patrick Pijnappel via swift-dev > <swift-dev@swift.org> wrote: > > In trying to implement a COW type, but I'm running into problems with > isUniqueReferenced breaking in even fairly simple cases. For example (with > -O) the code below prints "bar: false", commenting out the print in test() > makes it print "bar: true", and removing the var parameter var foo: Foo and > using var foo = foo instead breaks it again. Am I doing something wrong here? > > class FooStorage { var x: Int = 0 } > > struct Foo { var storage = FooStorage() } > > func bar(var foo: Foo) { > print("bar: \(isUniquelyReferencedNonObjC(&foo.storage))") > } > > func test() { > var foo = Foo() > print("test: \(isUniquelyReferencedNonObjC(&foo.storage))") > bar(foo) > } > > test()
You're not doing anything wrong, this is just the ARC optimizer at work. `foo` inside `test` is dead after the call to `bar`, so ownership is transferred directly to `bar`'s parameter. -Joe _______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev