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