Returns a Boolean value indicating whether the given object is a class instance known to have a single strong reference.
The isKnownUniquelyReferenced(_:)
function is useful for implementating
the copy-on-write optimization for the deep storage of value types:
mutating
func
modifyMe
(
_
arg
:
X
) {
if
isKnownUniquelyReferenced
(
&
myStorage
) {
myStorage
.
modifyInPlace
(
arg
)
}
else
{
myStorage
=
self
.
createModified
(
myStorage
,
arg
)
}
}
Weak references do not affect the result of this function.
This function is safe to use for mutating functions in multithreaded code because a false positive implies that there is already a user-level data race on the value being mutated.
object
: An instance of a class. This function does not modify
object
; the use of inout
is an implementation artifact.
Returns: true
if object
is a known to have a
single strong reference; otherwise, false
. If object
is nil
, the
return value is false
.
Returns a Boolean value indicating whether the given object is a class instance known to have a single strong reference.
The
isKnownUniquelyReferenced(_:)
function is useful for implementating the copy-on-write optimization for the deep storage of value types:Weak references do not affect the result of this function.
This function is safe to use for mutating functions in multithreaded code because a false positive implies that there is already a user-level data race on the value being mutated.
object
: An instance of a class. This function does not modifyobject
; the use ofinout
is an implementation artifact. Returns:true
ifobject
is a known to have a single strong reference; otherwise,false
.Declaration
func
isKnownUniquelyReferenced
<
T
:
AnyObject
>
(
_
object
:
inout
T
) -
>
Bool