runtime之?dāng)?shù)組巧用

數(shù)組是開發(fā)中經(jīng)常用到的一個(gè)類,開發(fā)中常常遇到的就是添加對(duì)象到數(shù)組,和從數(shù)組中取對(duì)象。當(dāng)從服務(wù)器或者其他一些地方獲取數(shù)據(jù)為空的時(shí)候,不慎添加至數(shù)據(jù),或者取值數(shù)組越界就會(huì)崩潰。下面利用runtime解決這兩個(gè)問(wèn)題。

1、添加nil到數(shù)組

在NSMutableArray類別方法中,重寫load方法,利用runtime進(jìn)行方法交換,如下圖


使用自定義的方法wtkAddObject來(lái)替換系統(tǒng)的addObject。load方法為第一次加載該類時(shí)調(diào)用,所以即使不導(dǎo)入類別的頭文件,也會(huì)走這個(gè)方法。另外,NSMutableArray的真正類型為__NSArrayM.

自定義方法:

添加至數(shù)組前,先判斷obj是否為空。需要注意的是,這里不能調(diào)用系統(tǒng)的addObject,否則會(huì)死循環(huán)。這點(diǎn)一開始一直不理解,百度也沒有搜到。后來(lái)終于想通,IMP方法已經(jīng)交換,所以才會(huì)調(diào)用自定義的方法。

2、數(shù)組越界

交換方法與上邊的一樣,都是在load方法中進(jìn)行,如下圖

使用自定義的objectAtIndex來(lái)替換系統(tǒng)的

可以在數(shù)組越界的分支里邊來(lái)進(jìn)行所需要的操作。else里邊原理與上邊一致。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,030評(píng)論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • 前言 到了今天終于要"出院"了,要總結(jié)一下住院幾天的收獲,談?wù)凴untime到底能為我們開發(fā)帶來(lái)些什么好處。當(dāng)然它...
    一縷殤流化隱半邊冰霜閱讀 23,577評(píng)論 56 317
  • 目錄 Objective-C Runtime到底是什么 Objective-C的元素認(rèn)知 Runtime詳解 應(yīng)用...
    Ryan___閱讀 2,008評(píng)論 1 3
  • 王祥頤11月份第四次讀書打卡我讀的書是假如給我三天光明,我讀啦152頁(yè)到161頁(yè),我喜歡句子是:看完信會(huì)后,我滿心...
    祥頤閱讀 236評(píng)論 0 0

友情鏈接更多精彩內(nèi)容