日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios 数组越界奔溃库_iOS中防止数组越界之后发生崩溃

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios 数组越界奔溃库_iOS中防止数组越界之后发生崩溃 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在iOS開發中有時會遇到數組越界的問題,從而導致程序崩潰。為了防止程序崩潰,我們就要對數組越界進行處理。通過上網查資料,發現可以通過為數組寫一個分類來解決此問題。

基本思路:為NSArray寫一個防止數組越界的分類。分類中利用runtime將系統中NSArray的對象方法objectAtIndex:替換,然后對objectAtIndex:傳遞過來的下標進行判斷,如果發生數組越界就返回nil,如果沒有發生越界,就繼續調用系統的objectAtIndex:方法。

代碼:

.h文件:

#import

#import

@interface NSArray (beyond)

@end

.m文件:

#import "NSArray+beyond.h"

@implementation NSArray (beyond)

+ (void)load{

[superload];

//? 替換不可變數組中的方法

Method oldObjectAtIndex =class_getInstanceMethod(objc_getClass("__NSArrayI"),@selector(objectAtIndex:));

Method newObjectAtIndex =class_getInstanceMethod(objc_getClass("__NSArrayI"),@selector(__nickyTsui__objectAtIndex:));

method_exchangeImplementations(oldObjectAtIndex, newObjectAtIndex);

//? 替換可變數組中的方法

Method oldMutableObjectAtIndex =class_getInstanceMethod(objc_getClass("__NSArrayM"),@selector(objectAtIndex:));

Method newMutableObjectAtIndex = class_getInstanceMethod(objc_getClass("__NSArrayM"),@selector(mutableObjectAtIndex:));

method_exchangeImplementations(oldMutableObjectAtIndex, newMutableObjectAtIndex);

}

- (id)__nickyTsui__objectAtIndex:(NSUInteger)index{

if (index >self.count -1 || !self.count){

@try {

return [self__nickyTsui__objectAtIndex:index];

} @catch (NSException *exception) {

//__throwOutException? 拋出異常

NSLog(@"數組越界...");

returnnil;

} @finally {

}

}

else{

return [self__nickyTsui__objectAtIndex:index];

}

}

- (id)mutableObjectAtIndex:(NSUInteger)index{

if (index >self.count -1 || !self.count){

@try {

return [selfmutableObjectAtIndex:index];

} @catch (NSException *exception) {

//__throwOutException? 拋出異常

NSLog(@"數組越界...");

returnnil;

} @finally {

}

}

else{

return [selfmutableObjectAtIndex:index];

}

}

總結

以上是生活随笔為你收集整理的ios 数组越界奔溃库_iOS中防止数组越界之后发生崩溃的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。