> On Jan 25, 2017, at 10:20 AM, Edward Connell via swift-users 
> <swift-users@swift.org> wrote:
> 
> I have a data structure that calls isKnownUniquelyReferenced on a member. It 
> forces everything to be marked as mutating because of the inout parameter, 
> however the parameter is never mutated, it is just read right?? The reason it 
> is inout is because a read only reference is required.
> 
> If it is truly not mutating, is there some way around this so I don't have to 
> mark everything in the caller chain as mutating also? It's kind of annoying...
> 
> Thanks, Ed

isKnownUniquelyReferenced doesn’t change the value of the reference. It has 
mutating semantics because that’s the only way to refer to the location holding 
the reference (as opposed to the reference’s value). It’s checking whether that 
location holds the only copy of that value.

You would normally only call isKnownUniquelyReferenced when you need to mutate 
the object, so I’ve never seen a usability issue. It would be interesting to 
see your case.

There have been proposals for future improvements to this 
API—isUniquelyReferenced could return a new reference of a different mutable 
type--but that hinges on future language support.

-Andy

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to