func isKnownUniquelyReferenced <T>(inout T) -> Bool
An instance of a class. This function does not modify object
; the use of inout
is an implementation artifact.
あるクラスのインスタンス。この関数はobject
を修正しません;inout
の使用は、技巧上の実装です。
Availability
Technology
func isKnownUniquelyReferenced<T>(_ object: inout T?) -> Bool
where T : AnyObject
object
An instance of a class. This function does not modify object
; the use of inout
is an implementation artifact.
あるクラスのインスタンス。この関数はobject
を修正しません;inout
の使用は、技巧上の実装です。
true
if object
is known to have a single strong reference; otherwise, false
. If object
is nil
, the return value is false
.
object
が強い参照をただ1つだけ持つものと知られているならばtrue
;そうでなければ、false
。object
がnil
ならば、戻り値はfalse
です。
The is
function is useful for implementing the copy-on-write optimization for the deep storage of value types:
is
関数は、値型の深い貯蔵に対してコピーオンライト最適化を実装するのに便利です:
is
checks only for strong references to the given object—if object
has additional weak or unowned references, the result may still be true
. Because weak and unowned references cannot be the only reference to an object, passing a weak or unowned reference as object
always results in false
.
is
は与えられたオブジェクトに対する強い参照に対してのみ確認します — object
がさらに弱いまたは非所有参照を持つ場合、結果は依然としてtrue
です。弱いおよび非所有の参照は、あるオブジェクトに対する唯一の参照ではありえないので、弱いまたは非所有参照をobject
として渡すことは常にfalse
という結果になります。
If the instance passed as object
is being accessed by multiple threads simultaneously, this function may still return true
. Therefore, you must only call this function from mutating methods with appropriate thread synchronization. That will ensure that is
only returns true
when there is really one accessor, or when there is a race condition, which is already undefined behavior.
object
として渡されるインスタンスが複数のスレッドによって同時にアクセスされる場合、この関数は依然としてtrue
を返します。したがって、あなたはこの関数を変更メソッドから適切なスレッド同期で呼ぶだけにしてください。それはis
が本当に1つのアクセッサしかない時に、またはすでに未定義挙動であるところの競合状態の時にtrue
を返すだけであるのを確実にします。
func isKnownUniquelyReferenced <T>(inout T) -> Bool