當我還是一個彩筆時归露,本著一顆向上的心,鼓足勇氣斤儿,當打開別人的博客時剧包,哇塞,好牛逼啊往果,完全看不懂啊疆液,看來我沒有天分啊。
如今我變成了一個飽受你們連番套路的彩筆陕贮,只想說堕油,你們扯那么多蛋有什么用,嚇得多少人去賣房了肮之,把晦澀的名詞當作自己裝逼的基礎(chǔ)馍迄,把簡單的邏輯寫復(fù)雜當作自己牛逼的標志。最重要的是有些很有質(zhì)量的底層講解局骤,你copy過去也就算了攀圈,你不拍版是什么鬼,你少copy幾行是什么鬼峦甩,你還加入你自己錯誤的認知是什么鬼赘来。
首先我們要明確现喳,Object-C是動態(tài)語言,也就是說在運行時可以改變其結(jié)構(gòu)的語言:例如新的函數(shù)犬辰、對象嗦篱、甚至代碼可以被引進,已有的函數(shù)可以被刪除或是其他結(jié)構(gòu)上的變化幌缝。通俗點說就是在運行時代碼可以根據(jù)某些條件改變自身結(jié)構(gòu)灸促。與動態(tài)語言相對應(yīng)的,運行時結(jié)構(gòu)不可變的語言就是靜態(tài)語言涵卵。如Java浴栽、C、C++轿偎。這才產(chǎn)生了Runtime強大的功能特性典鸡,所以,不要和你們安卓的同事說:
- 這個簡單坏晦,臨時把這個兩個對象鏈接一下萝玷,然后取出來。
- 把這兩個方法交換一下昆婿,相同功能模塊統(tǒng)一處理球碉。
- 這個方法你動態(tài)添加一下嘍。
-
等等
Runtime(也就是運行時)仓蛆,它基本上是用C和匯編寫的汁尺,這個庫使得C語言有了面向?qū)ο蟮哪芰ΑK粤晳T了面向?qū)ο缶幊痰男』飩兒孟駥τ贑的API一般都不太友好多律,但是又有很多C的API強大到別人問你你不知道那你都抬不起頭痴突,Runtime就是其中之一。關(guān)于它的傳說有很多狼荞,可以說在有的人手里牛逼的不可一世辽装。下面我們毫無保留,毫無套路的說幾個非常好用的使用場景:
Runtime奇技淫巧__帶你深入理解Runtime特有概念
Runtime奇技淫巧__不受限制的消息發(fā)送
Runtime奇技淫巧__獲取類的實例變量以及屬性并強勢與KVC相味、msgSend混用
Runtime奇技淫巧__方法交換
Runtime奇技淫巧__動態(tài)鏈接對象以及給分類添加屬性
Runtime奇技淫巧__動態(tài)添加方法拾积,消息轉(zhuǎn)發(fā)改善異常
上面就是我想說的全部內(nèi)容,我想你大概應(yīng)該差不多了解OC這門語言到底是個什么東西了丰涉。然而如果你是個死腦筋拓巧,這對于你也并沒有什么卵用。有很多人都說你寫的這個知識點太low了一死,我們都會肛度,或者我根本不關(guān)心底層原理,其實有很多人會用但是并不知道原理投慈,也有很多人知道原理但遇到問題根本想不到對應(yīng)的解決方案承耿!那么問題來了冠骄,那下面該寫點什么呢?