可能存在問題:
使用的數(shù)組下標超出數(shù)組最大下標值:
比如數(shù)組長度count, index的下標范圍[0, count -1], 在開發(fā)時倔约,可能index的最大值超過數(shù)組的范圍,這可能是不同模塊的處理沒有對應上坝初。使用的數(shù)組下標是一個非正常值:
如果小標(index)的值是由其他模塊的變量傳遞進來的浸剩,這就會有很大的不確定性, 可能是一個很大的整數(shù)值鳄袍。
很明顯绢要,上面的值分別是32位和64位下的最大整數(shù)值,可能的情況就是傳遞的 index 參數(shù)獲取了無效的值拗小,但仍然拿到 NSMutableArray 中使用
比如 index 通過下面的方式獲取
如果找不到 str 重罪,則返回 NSNotFound,32位下它就是2147483647哀九,64位下18446744073709551615 剿配,將它作為參數(shù)傳遞則會導致 NSRangeException。空數(shù)組的操作:
如果一個數(shù)組剛剛初始化勾栗,還是空的惨篱,就對它進行相關讀取操作處理的數(shù)據范圍 NSRange 超過數(shù)據本身的長度
解決方法:
為了避免 NSRangeException 的發(fā)生,必須對傳入的小標參數(shù)或者 NSRange 范圍進行合法性檢查围俘,判斷是否在集合數(shù)據的范圍內砸讳,然后再進行相關的處理