2017-05-31 3 views
1

私はSwiftのARCについて読んで、メモリの割り当てと解放をよりよく理解しています。次のブログで私は抜粋しています。私はクラクケンが触手への強い参照を持っていることを理解しています。そして触手はサッカーに対する強い言及を持っていますが、クラッカーンがサッカーと強い関係を持っているかどうか知りたいですか?ここでARCに関して、次のコードでは、クラッカーはサッカーを強く参照していますか?

コードです:

class Kraken { 
    let tentacle = Tentacle() //strong reference to child. 
} 
class Tentacle { 
    let sucker = Sucker() //strong reference to child 
} 
class Sucker {} 
+1

このような間接(推移的)参照は、強い参照カウントには数えられません。直属の人だけが行います。 – Alexander

答えて

2

いいえ、それはしていません。 suckerオブジェクトの参照カウントはまだです。瞬間Krakenカットは彼のtentacleを失う、suckerも同様に離れて行くだろう。つまり)

、ARCメモリマネージャによって使用される参照カウンタを増加させない間接の強い参照。

簡単なテスト:

let kraken = Kraken() 
let refCount = CFGetRetainCount(kraken.tentacle.sucker) 
print("ref count: \(refCount)") 

出力:

参照回数:あなたはそれがCFGetRetainCount機能が保持する参照を含んでいるので、1として2

をお読みください引数も同様です。

関連する問題