首先是源碼, 包括注釋, 有時(shí)候類名和變量名以及方法名也會(huì)提供一些信息, 其次就是調(diào)試, 根據(jù)輸出結(jié)果合理猜想, 再有就是總結(jié)其它文章的內(nèi)容了.
AutoreleasePool 的實(shí)現(xiàn)機(jī)制 (二)本文章基于 objc4-725 進(jìn)行測(cè)試.objc4 的代碼可以在 https://opensource.apple.com/tarballs/objc4/[https://...
首先是源碼, 包括注釋, 有時(shí)候類名和變量名以及方法名也會(huì)提供一些信息, 其次就是調(diào)試, 根據(jù)輸出結(jié)果合理猜想, 再有就是總結(jié)其它文章的內(nèi)容了.
AutoreleasePool 的實(shí)現(xiàn)機(jī)制 (二)本文章基于 objc4-725 進(jìn)行測(cè)試.objc4 的代碼可以在 https://opensource.apple.com/tarballs/objc4/[https://...
@太陽(yáng)騎士索拉爾 看你也寫了好多, 堅(jiān)持那么久, 真厲害
runtime(二) SideTables本文章基于 objc4-750 進(jìn)行測(cè)試.objc4 的代碼可以在 https://opensource.apple.com/tarballs/objc4/ 中得到. 引用計(jì)...
@太陽(yáng)騎士索拉爾 數(shù)組里存的是 BucketT 類型的數(shù)據(jù):
typedef std::pair<KeyT, ValueT> BucketT;
是一個(gè)元祖類型, KeyT 是對(duì)象的地址(或者是空桶以及墓碑的標(biāo)記 key), ValueT 才是引用計(jì)數(shù).
runtime(二) SideTables本文章基于 objc4-750 進(jìn)行測(cè)試.objc4 的代碼可以在 https://opensource.apple.com/tarballs/objc4/ 中得到. 引用計(jì)...
哈希桶其實(shí)就是使用開(kāi)散列算法處理沖突的哈希表, 就是當(dāng)出現(xiàn)哈希值重復(fù)的元素時(shí), 是使用一定的算法來(lái)計(jì)算偏移然后放入數(shù)組中(閉散列), 還是在對(duì)應(yīng)位置存入鏈表等容器來(lái)存放(開(kāi)散列). DenseMap 管理的 Buckets 是使用閉散列的哈希表, 它有自己的哈希算法, 當(dāng)出現(xiàn)哈希值重復(fù)時(shí), 是使用
BucketNo(哈希值) += ProbeAmt++;
BucketNo&= (NumBuckets-1);
來(lái)給哈希值增加偏移的.
另外我也是邊學(xué)邊寫的, 可能也有不對(duì)的地方.
runtime(二) SideTables本文章基于 objc4-750 進(jìn)行測(cè)試.objc4 的代碼可以在 https://opensource.apple.com/tarballs/objc4/ 中得到. 引用計(jì)...
感謝分享, 我有一個(gè)問(wèn)題想不太明白, 就是 NSURLconnection 里面, 有一個(gè)方法叫做 - (void)setDelegateQueue:(nullable NSOperationQueue*)queue, 感覺(jué)也是可以設(shè)置代理的隊(duì)列的, 所以需不需要常駐線程的問(wèn)題, 我還是有些疑問(wèn).
AFNetworking3.0后為什么不再需要常駐線程?最近在補(bǔ)源碼閱讀方面的短板,第一個(gè)選擇的就是AFNetworking,一方面AF的編碼思路、代碼質(zhì)量都屬于開(kāi)源框架的上乘;另一方面也可以借機(jī)溫習(xí)一下網(wǎng)絡(luò)方面的東西。AF源碼解...