數(shù)組是開發(fā)中經(jīng)常用到的一個(gè)類盗迟,開發(fā)中常常遇到的就是添加對(duì)象到數(shù)組肛冶,和從數(shù)組中取對(duì)象刽宪。當(dāng)從服務(wù)器或者其他一些地方獲取數(shù)據(jù)為空的時(shí)候,不慎添加至數(shù)據(jù)撩满,或者取值數(shù)組越界就會(huì)崩潰。下面利用runtime解決這兩個(gè)問題绅你。
1伺帘、添加nil到數(shù)組
在NSMutableArray類別方法中,重寫load方法忌锯,利用runtime進(jìn)行方法交換伪嫁,如下圖
使用自定義的方法wtkAddObject來替換系統(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)一開始一直不理解蛛芥,百度也沒有搜到提鸟。后來終于想通,IMP方法已經(jīng)交換仅淑,所以才會(huì)調(diào)用自定義的方法称勋。
2、數(shù)組越界
交換方法與上邊的一樣涯竟,都是在load方法中進(jìn)行赡鲜,如下圖
使用自定義的objectAtIndex來替換系統(tǒng)的
可以在數(shù)組越界的分支里邊來進(jìn)行所需要的操作。else里邊原理與上邊一致昆禽。