iOS開發-運行時機制runtime(一)

寫在前面:剛接觸iOS開發時,runtime我們聽得很多,感覺很高大上,卻又說不出個所以然,今天,我把我自己知道的分享給大家。

首先,說OC是運行時機制,那肯定是有一個比較對象。我們拿C語言和OC作對比。C語言寫的代碼,在編譯的時候就已經決定了某一段代碼在運行時就會調用某一個函數;而OC則不同,OC在編譯的時候只會檢查是否已經定義一個方法,沒有實現也不會報錯,但是,在運行時,執行某一個只定義未實現的方法就會崩潰。所以說OC是運行時機制。

OC中的方法調用:
任何方法調用本質都是發送一個消息,用runtime發送消息.OC底層就是通過runtime實現的。

方法調用的流程:
OC中的方法可分為類方法和對象方法,對象方法可以再類對象的方法列表中找到, 類方法可以在元類的方法列表中找到。而所有方法都存在于內存的方法區。在這里簡單說明一下:
內存的五大區:1.棧 2.堆 3.靜態區 4.常量區 5.方法區。
1.棧:不需要手動管理內存,自動管理
2.堆,需要手動管理內存,自己去釋放
其他三個憑字面意思理解,我也不是太懂。
方法調用流程:
1.通過isa去對應的類中查找(開發調式過程中,我們都會看到某一個對象的isa指針,就是通過isa指針找到對應的類)
2.注冊方法編號(給方法注冊編號后,既可以做統計又方便查找。就像我們每個人有自己的身份證號碼,學生有學號一樣)
3.根據方法編號去查找對應方法
4.找到只是最終函數實現地址,根據地址去方法區調用對應函數

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉至元數據結尾創建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,776評論 0 9
  • 對于從事 iOS 開發人員來說,所有的人都會答出【runtime 是運行時】什么情況下用runtime?大部分人能...
    夢夜繁星閱讀 3,733評論 7 64
  • 把網上的一些結合自己面試時遇到的面試題總結了一下,以后有新的還會再加進來。 1. OC 的理解與特性 OC 作為一...
    AlaricMurray閱讀 2,610評論 0 20
  • 目錄 Objective-C Runtime到底是什么 Objective-C的元素認知 Runtime詳解 應用...
    Ryan___閱讀 1,961評論 1 3
  • 輸出力,開啟了我另一個世界,認識了不同領域的朋友,非常幸運參加這次學習和成長的課堂,讓大家在一起在思想碰撞出絢麗的...
    3dac00f56ba8閱讀 307評論 1 1