Q: 一個weak修飾的變量時怎么被加入到弱引用表中的?來看一個代碼塊: 我們先來看看objc_initWeak調(diào)用了什么方法。 我們從源碼可以...
Q: 什么是ARC? ARC是由編譯器(LLVM)為我們自動插入retain、release之外還需要Runtime協(xié)作最終組成了ARC。 AR...
iOS中的內(nèi)存管理,涉及到這么幾個方法 alloc retain release retainCount autorelease dealloc...
先來了解一下iOS中的內(nèi)存布局。 上面的圖代表的是內(nèi)存區(qū)域,最上方是內(nèi)核區(qū),最下面是保留的內(nèi)存空間。中間位置是給程序加載使用的空間。程序被加載到...
在說動態(tài)添加方法之前,我們先來看一個問題 Q: 使用performSelector:可能會遇到什么問題? 這個方法不會檢查對象的方法實(shí)現(xiàn),所以可...
Q: 什么是Method-Swizzling? 實(shí)際上就是交換兩個方法的實(shí)現(xiàn)! 實(shí)際上實(shí)現(xiàn)起來很簡單 這樣兩個方法的實(shí)現(xiàn)就被交換了。
我們先來看看實(shí)例方法的消息轉(zhuǎn)發(fā)流程 這里來說明一下流程 先調(diào)用resolveInstanceMethod:這個類方法,告訴系統(tǒng)我們是否需要通過消...
方法緩存的查找流程,實(shí)際上就是按照給定的SEL,在方法緩存列表中找到對應(yīng)的bucket_t中的IMP。對應(yīng)的流程就是: 我們通過給定的方法映射出...
我們知道在OC中,所有的方法調(diào)用最終都會轉(zhuǎn)換成objc_msgSend形式的方法調(diào)用。如下圖: 而對于調(diào)用父類的方法,用的是另一個方法objc_...