iOS~runtime理解 - (開發面試必備)

來源:互聯網
上載者:User

標籤:方法   c語言   中文   nil   修改   建立   之一   介面   很多   

什麼是Runtime?

Runtime 又叫運行時,是一套底層的 C 語言 API,其為 iOS 內部的核心之一,我們平時編寫的 OC 代碼,底層都是基於它來實現的。

多數情況我們只需要編寫 OC 代碼即可,Runtime 系統自動在幕後搞定一切,所以很多朋友對runtime不是很重視,等面試的時候經常被面試官卡住.我也是新手,吃了這個虧,所以對runtime進行了學習,以通俗易懂的方式分享給大家

Runtime 的作用

可以通過Runtime修改系統方法,比方說我們平時在項目中用到WKWebView(UIWebView)去載入一些url,如果在URL中含有中文,OC語言是不能夠識別出該URL的.所以我們輸出的URL為null,此時介面就載入不出來,那麼我們如何去避免這種問題?

 

第一種方式,使用Category(類的擴充)首先我們建立一個繼承與NSURL的擴充

然後我們在這個擴充的.h中寫一個類方法

然後在.m中去實現

最後回到自己的控制器去匯入這個擴充到標頭檔,將本來系統的URLWithString 改成自己擴充的類方法,這樣我們就能輕易的定位到為什麼自己的URL沒有載入出來了

 

那麼重點來了,我們如何使用Runtime去實現修改系統提供給我們的方法呢?(不用自訂方法)

首先大家要知道,執行URLWithString方法的時候,系統內部會首先調用+(void)load方法,那我們就在這個方法裡邊使用Runtime進行修改,先匯入標頭檔#import <objc/runtime.h>然後在load方法中將系統的URLWithString方法和我們之前自訂的BX_UrlWithString方法進行交換.也就是說,當我們調用URLWithString方法載入url的時候,讓系統內部自動調用我們自訂的BX_UrlWithString方法中來.都有注釋,此時我們在我們控制器中用URLWithString去載入URL就會實現了在他的內部多一個我們自己加的功能(判斷URL是否為nil)

 

到這裡我們就實現了使用Runtime實現系統內部方法的修改. 新手分享,大神不喜勿噴.

  

iOS~runtime理解 - (開發面試必備)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.