1、內(nèi)存管理
Swift是通過引用計數(shù)(ARC)來管理內(nèi)存的
1.1寓调、swift源碼查看
查找過程如下
1锌唾、HeapObject
類中的 refCounts
變量記錄引用計數(shù)
2、
InlineRefCounts
為模板類夺英,類型為RefCounts<InlineRefCountBits>
3晌涕、
RefCounts
類內(nèi)部存儲了InlineRefCountBits
4滋捶、查找
InlineRefCountBits
,InlineRefCountBits
由泛型RefCountBitsT<RefCountIsInline>
類型定義5渐排、最終查找類
RefCountBitsT
炬太,構造函數(shù)為RefCountBitsT()
6、通過查找64位結(jié)構體驯耻,查找到對應的值
RefCountBitsT
函數(shù)對應的入?yún)⑽挥蜻\算分別如下strongExtraCount
: 0unownedCount
: 1StrongExtraRefCountShift
: 33亲族,(左移33位)(強引用次數(shù))PureSwiftDeallocShift
: 1,(左移0位)(析構次數(shù))UnownedRefCountShift
: 1可缚,(左移1位)(無主引用次數(shù))
1.2霎迫、代碼實際操作
1、如下的代碼斷點查看
斷點在108處帘靡,
0x0000000400000003
結(jié)合上面的
RefCountBitsT
函數(shù)知给,0x0000000400000003
,代表PureSwiftDeallocShift
為1描姚,UnownedRefCountShift
為1涩赢,StrongExtraRefCountShift
為2