在ios開發中有時會遇到陣列越界的問題,從而導致程式崩潰。為了防止程式崩潰,我們就要對陣列越界進行處理。通過上網查資料,發現可以通過為陣列寫乙個分類來解決此問題。
基本思路:為nsarray寫乙個防止陣列越界的分類。分類中利用runtime將系統中nsarray的物件方法objectatindex:替換,然後對objectatindex:傳遞過來的下標進行判斷,如果發生陣列越界就返回nil,如果沒有發生越界,就繼續呼叫系統的objectatindex:方法。
**:.h檔案:
#import
#import
@inte***ce nsarray (beyond)
@end
.m檔案:
#import "nsarray+beyond.h"
@implementation nsarray (beyond)
+ (void)load
- (id)__nickytsui__objectatindex:(nsuinteger)index @catch (n***ception *exception) @finally
}else
}- (id)mutableobjectatindex:(nsuinteger)index @catch (n***ception *exception) @finally
}else}@
2018.06.01更新:
這裡有乙個防止陣列越界崩潰的公升級版,即使arr[index]這種情況下產生的崩潰也能防止。
傳送門:
iOS 陣列越界處理方法總結
所謂的陣列越界,就是假如你的下標總數現在為32個,然後你在下一秒又執行了乙個方法要從50個資料裡進行賦值,篩選之類的 而你此時數量為32 50的資料還沒有請求到 往往會出現陣列越界的崩潰資訊 具體的解決方式我們通常會選擇把陣列做個判斷列如 return nil 雖然在大多數情況下是可以的,但是多少並...
iOS 陣列越界 Crash加工經驗
我們先來看看有可能會出現的陣列越界crash的地方。void tableview uitableview tableview didselectrowatindexpath nsindexpath indexpath uitableviewcell tableview uitableview tab...
ios 針對陣列越界的崩潰優化
陣列越界是常見的崩潰 崩潰日記是類似這樣的 網上也找過怎麼解決,但是都不是太徹底,由於 nsarray是乙個類簇,需要把所有的入口都封住才算完美 方法還是很常見的,用了runtime的方法替換 然後 給nsarray加類別 部分核心 implementation nsarray safeindex ...