From 1448a02de03315a0abefe2ea7b219a9bd473061e Mon Sep 17 00:00:00 2001 From: kai60 Date: Mon, 11 Nov 2019 17:59:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E7=89=87=E8=B0=83=E6=95=B4=EF=BC=8C?= =?UTF-8?q?=E6=9A=97=E9=BB=91=E6=A8=A1=E5=BC=8F=E5=B1=8F=E8=94=BD=EF=BC=8C?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E9=98=B2=E9=97=AA=E9=80=80=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 10244 -> 10244 bytes Ifish.xcodeproj/project.pbxproj | 88 ++++++ Ifish/.DS_Store | Bin 18436 -> 18436 bytes Ifish/AppDelegate.m | 5 +- Ifish/Assets.xcassets/.DS_Store | Bin 10244 -> 10244 bytes .../热点链接/apcoonetc.imageset/Contents.json | 21 ++ .../热点链接/apcoonetc.imageset/apcoonetc.png | Bin 0 -> 168587 bytes Ifish/AvoidCrash/AvoidCrash.h | 86 ++++++ Ifish/AvoidCrash/AvoidCrash.m | 200 ++++++++++++++ Ifish/AvoidCrash/NSArray+AvoidCrash.h | 25 ++ Ifish/AvoidCrash/NSArray+AvoidCrash.m | 253 ++++++++++++++++++ .../NSAttributedString+AvoidCrash.h | 25 ++ .../NSAttributedString+AvoidCrash.m | 96 +++++++ Ifish/AvoidCrash/NSDictionary+AvoidCrash.h | 24 ++ Ifish/AvoidCrash/NSDictionary+AvoidCrash.m | 56 ++++ Ifish/AvoidCrash/NSMutableArray+AvoidCrash.h | 26 ++ Ifish/AvoidCrash/NSMutableArray+AvoidCrash.m | 143 ++++++++++ .../NSMutableAttributedString+AvoidCrash.h | 23 ++ .../NSMutableAttributedString+AvoidCrash.m | 74 +++++ .../NSMutableDictionary+AvoidCrash.h | 24 ++ .../NSMutableDictionary+AvoidCrash.m | 72 +++++ Ifish/AvoidCrash/NSMutableString+AvoidCrash.h | 29 ++ Ifish/AvoidCrash/NSMutableString+AvoidCrash.m | 97 +++++++ Ifish/AvoidCrash/NSObject+AvoidCrash.h | 25 ++ Ifish/AvoidCrash/NSObject+AvoidCrash.m | 114 ++++++++ Ifish/AvoidCrash/NSString+AvoidCrash.h | 29 ++ Ifish/AvoidCrash/NSString+AvoidCrash.m | 204 ++++++++++++++ Ifish/Info.plist | 4 +- .../ConnectAauariumVC/ConAquarChooseWiFiVC.m | 6 +- .../YooseeNextConnectViewController.mm | 1 + 30 files changed, 1747 insertions(+), 3 deletions(-) create mode 100644 Ifish/Assets.xcassets/热点链接/apcoonetc.imageset/Contents.json create mode 100644 Ifish/Assets.xcassets/热点链接/apcoonetc.imageset/apcoonetc.png create mode 100644 Ifish/AvoidCrash/AvoidCrash.h create mode 100644 Ifish/AvoidCrash/AvoidCrash.m create mode 100644 Ifish/AvoidCrash/NSArray+AvoidCrash.h create mode 100644 Ifish/AvoidCrash/NSArray+AvoidCrash.m create mode 100644 Ifish/AvoidCrash/NSAttributedString+AvoidCrash.h create mode 100644 Ifish/AvoidCrash/NSAttributedString+AvoidCrash.m create mode 100644 Ifish/AvoidCrash/NSDictionary+AvoidCrash.h create mode 100644 Ifish/AvoidCrash/NSDictionary+AvoidCrash.m create mode 100644 Ifish/AvoidCrash/NSMutableArray+AvoidCrash.h create mode 100644 Ifish/AvoidCrash/NSMutableArray+AvoidCrash.m create mode 100644 Ifish/AvoidCrash/NSMutableAttributedString+AvoidCrash.h create mode 100644 Ifish/AvoidCrash/NSMutableAttributedString+AvoidCrash.m create mode 100644 Ifish/AvoidCrash/NSMutableDictionary+AvoidCrash.h create mode 100644 Ifish/AvoidCrash/NSMutableDictionary+AvoidCrash.m create mode 100644 Ifish/AvoidCrash/NSMutableString+AvoidCrash.h create mode 100644 Ifish/AvoidCrash/NSMutableString+AvoidCrash.m create mode 100644 Ifish/AvoidCrash/NSObject+AvoidCrash.h create mode 100644 Ifish/AvoidCrash/NSObject+AvoidCrash.m create mode 100644 Ifish/AvoidCrash/NSString+AvoidCrash.h create mode 100644 Ifish/AvoidCrash/NSString+AvoidCrash.m diff --git a/.DS_Store b/.DS_Store index 542713cecac6134823f22a6709e0857cef29cb58..4d873c36aa8249161e54be79c47a6320fc31ec7d 100644 GIT binary patch delta 148 zcmZn(XbG6$ÄU^hRb#%3OYMNC2*TpV1yT(Q9!`Q^bSi6y1QPLu1zy>z3&0+}hP zNr^=q9Go1S@d6Un)h3pPItr!+hP65h)#l~~ItnJnX0^4Po6Ut?8JQJ7PnoR6X!%3W6?ea1_l-e1_1_!Oon2H3_B zifVilCp%2$H>jH|##qLv1~OywY{P7}iC5((>j(&JmJx7a+$^Dao(-X_XfnHlFwk9_ hWgJvk1Q>xRL;FM-W6=o=3=Av`3<3-cnGD4Y84S7%0SrYG3za7uxUjG?fg~qi z(Q{^Gojk=%K_EW~C;(K-u#$m+vEu*#&4tplST-xLWHN1L=V0MrwAsAHEQE3L1Ob`J z$Ax*B8LDo9*qb#3lKB{oC-W#QRperDWbgr6<;3935W-NzkjRk2keXCpT#%FlHvGh7 zY0(BQ@#<=0104lJOXJD&)nplGOlFjjSDgv87pwNN;G(>o{JeCaJmcnd3YvTqOH>%; zCyVGePL9@>o~*}oW3n)l^kyxCY_`qc)E=@=EK!)u?jQ^dfXy-vDlCi)lWlmUC&#!f K+}vZ#&I|yLU`bH` diff --git a/Ifish/AppDelegate.m b/Ifish/AppDelegate.m index b88f5c2..3f2cc2a 100644 --- a/Ifish/AppDelegate.m +++ b/Ifish/AppDelegate.m @@ -80,6 +80,7 @@ //阿里百川 #import #import "IfishADTimerViewController.h" +#import "AvoidCrash.h" @interface AppDelegate () @property(nonatomic,strong)ICSDrawerController*ics; @@ -169,7 +170,9 @@ if (data != nil) { [self sendExceptionLogWithData:data path:dataPath]; }*/ - +#ifdef __OPTIMIZE__ + [AvoidCrash becomeEffective]; +#endif //短信验证 [SMSSDK registerApp:SMSSDK_APPKey withSecret:SMSSDK_APPSec]; [SMSSDK enableAppContactFriends:NO]; diff --git a/Ifish/Assets.xcassets/.DS_Store b/Ifish/Assets.xcassets/.DS_Store index 507938acf3e10f6e3b72cd00df2d6761837b63cf..415c6c03e44fcd2720141362d34d7b838b50ba6e 100644 GIT binary patch delta 51 zcmZn(XbG6$&nU7nU^hRb$Yve^eRht5w*@<={7YWCSzG)F$7Xf~6NJ!YZSjKu=S37g delta 36 scmZn(XbG6$&nUbxU^hRb@MazXefG`4;#)W-Hb`t{S1@6p94vkk0M*+IT>t<8 diff --git a/Ifish/Assets.xcassets/热点链接/apcoonetc.imageset/Contents.json b/Ifish/Assets.xcassets/热点链接/apcoonetc.imageset/Contents.json new file mode 100644 index 0000000..a170885 --- /dev/null +++ b/Ifish/Assets.xcassets/热点链接/apcoonetc.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "apcoonetc.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Ifish/Assets.xcassets/热点链接/apcoonetc.imageset/apcoonetc.png b/Ifish/Assets.xcassets/热点链接/apcoonetc.imageset/apcoonetc.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7cbe7114a670adadc83a16f8361d4e1ca7530b GIT binary patch literal 168587 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 literal 0 HcmV?d00001 diff --git a/Ifish/AvoidCrash/AvoidCrash.h b/Ifish/AvoidCrash/AvoidCrash.h new file mode 100644 index 0000000..959d035 --- /dev/null +++ b/Ifish/AvoidCrash/AvoidCrash.h @@ -0,0 +1,86 @@ +// +// AvoidCrash.h +// AvoidCrash +// +// Created by mac on 16/9/21. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import +#import + +//category +#import "NSObject+AvoidCrash.h" + +#import "NSArray+AvoidCrash.h" +#import "NSMutableArray+AvoidCrash.h" + +#import "NSDictionary+AvoidCrash.h" +#import "NSMutableDictionary+AvoidCrash.h" + +#import "NSString+AvoidCrash.h" +#import "NSMutableString+AvoidCrash.h" + +#import "NSAttributedString+AvoidCrash.h" +#import "NSMutableAttributedString+AvoidCrash.h" + + +/** + * if you want to get the reason that can cause crash, you can add observer notification in AppDelegate. + * for example: + * + * [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dealwithCrashMessage:) name:AvoidCrashNotification object:nil]; + * + * =========================================================================== + * + * 你如果想要得到导致崩溃的原因,你可以在AppDelegate中监听通知,代码如上。 + * 不管你在哪个线程导致的crash,监听通知的方法都会在主线程中 + * + */ +#define AvoidCrashNotification @"AvoidCrashNotification" + + + +//user can ignore below define +#define AvoidCrashDefaultReturnNil @"This framework default is to return nil to avoid crash." +#define AvoidCrashDefaultIgnore @"This framework default is to ignore this operation to avoid crash." + + +#ifdef DEBUG + +#define AvoidCrashLog(...) NSLog(@"%@",[NSString stringWithFormat:__VA_ARGS__]) + +#else + +#define AvoidCrashLog(...) +#endif + + +@interface AvoidCrash : NSObject + + +/** + * become effective . You can call becomeEffective method in AppDelegate didFinishLaunchingWithOptions + * + * 开始生效.你可以在AppDelegate的didFinishLaunchingWithOptions方法中调用becomeEffective方法 + * + * 这是全局生效,若你只需要部分生效,你可以单个进行处理,比如: + * [NSArray avoidCrashExchangeMethod]; + * [NSMutableArray avoidCrashExchangeMethod]; + * ................. + * ................. + */ ++ (void)becomeEffective; + + +//user can ignore below method <用户可以忽略以下方法> + + ++ (void)exchangeClassMethod:(Class)anClass method1Sel:(SEL)method1Sel method2Sel:(SEL)method2Sel; + ++ (void)exchangeInstanceMethod:(Class)anClass method1Sel:(SEL)method1Sel method2Sel:(SEL)method2Sel; + ++ (void)noteErrorWithException:(NSException *)exception defaultToDo:(NSString *)defaultToDo; + + +@end diff --git a/Ifish/AvoidCrash/AvoidCrash.m b/Ifish/AvoidCrash/AvoidCrash.m new file mode 100644 index 0000000..e020a16 --- /dev/null +++ b/Ifish/AvoidCrash/AvoidCrash.m @@ -0,0 +1,200 @@ +// +// AvoidCrash.m +// AvoidCrash +// +// Created by mac on 16/9/21. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "AvoidCrash.h" + + +#define AvoidCrashSeparator @"================================================================" +#define AvoidCrashSeparatorWithFlag @"========================AvoidCrash Log==========================" + +#define key_errorName @"errorName" +#define key_errorReason @"errorReason" +#define key_errorPlace @"errorPlace" +#define key_defaultToDo @"defaultToDo" +#define key_callStackSymbols @"callStackSymbols" +#define key_exception @"exception" + + +@implementation AvoidCrash + +/** + * 开始生效(进行方法的交换) + */ ++ (void)becomeEffective { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + [NSObject avoidCrashExchangeMethod]; + + [NSArray avoidCrashExchangeMethod]; + [NSMutableArray avoidCrashExchangeMethod]; + + [NSDictionary avoidCrashExchangeMethod]; + [NSMutableDictionary avoidCrashExchangeMethod]; + + [NSString avoidCrashExchangeMethod]; + [NSMutableString avoidCrashExchangeMethod]; + + [NSAttributedString avoidCrashExchangeMethod]; + [NSMutableAttributedString avoidCrashExchangeMethod]; + }); +} + +/** + * 类方法的交换 + * + * @param anClass 哪个类 + * @param method1Sel 方法1 + * @param method2Sel 方法2 + */ ++ (void)exchangeClassMethod:(Class)anClass method1Sel:(SEL)method1Sel method2Sel:(SEL)method2Sel { + Method method1 = class_getClassMethod(anClass, method1Sel); + Method method2 = class_getClassMethod(anClass, method2Sel); + method_exchangeImplementations(method1, method2); +} + + +/** + * 对象方法的交换 + * + * @param anClass 哪个类 + * @param method1Sel 方法1(原本的方法) + * @param method2Sel 方法2(要替换成的方法) + */ ++ (void)exchangeInstanceMethod:(Class)anClass method1Sel:(SEL)method1Sel method2Sel:(SEL)method2Sel { + + + Method originalMethod = class_getInstanceMethod(anClass, method1Sel); + Method swizzledMethod = class_getInstanceMethod(anClass, method2Sel); + + BOOL didAddMethod = + class_addMethod(anClass, + method1Sel, + method_getImplementation(swizzledMethod), + method_getTypeEncoding(swizzledMethod)); + + if (didAddMethod) { + class_replaceMethod(anClass, + method2Sel, + method_getImplementation(originalMethod), + method_getTypeEncoding(originalMethod)); + } + + else { + method_exchangeImplementations(originalMethod, swizzledMethod); + } + +} + + + +/** + * 获取堆栈主要崩溃精简化的信息<根据正则表达式匹配出来> + * + * @param callStackSymbolStr 堆栈主要崩溃信息 + * + * @return 堆栈主要崩溃精简化的信息 + */ + ++ (NSString *)getMainCallStackSymbolMessageWithCallStackSymbols:(NSArray *)callStackSymbols { + + //mainCallStackSymbolMsg的格式为 +[类名 方法名] 或者 -[类名 方法名] + __block NSString *mainCallStackSymbolMsg = nil; + + //匹配出来的格式为 +[类名 方法名] 或者 -[类名 方法名] + NSString *regularExpStr = @"[-\\+]\\[.+\\]"; + + + NSRegularExpression *regularExp = [[NSRegularExpression alloc] initWithPattern:regularExpStr options:NSRegularExpressionCaseInsensitive error:nil]; + + + for (int index = 2; index < callStackSymbols.count; index++) { + NSString *callStackSymbol = callStackSymbols[index]; + + [regularExp enumerateMatchesInString:callStackSymbol options:NSMatchingReportProgress range:NSMakeRange(0, callStackSymbol.length) usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) { + if (result) { + NSString* tempCallStackSymbolMsg = [callStackSymbol substringWithRange:result.range]; + + //get className + NSString *className = [tempCallStackSymbolMsg componentsSeparatedByString:@" "].firstObject; + className = [className componentsSeparatedByString:@"["].lastObject; + + NSBundle *bundle = [NSBundle bundleForClass:NSClassFromString(className)]; + + //filter category and system class + if (![className hasSuffix:@")"] && bundle == [NSBundle mainBundle]) { + mainCallStackSymbolMsg = tempCallStackSymbolMsg; + + } + *stop = YES; + } + }]; + + if (mainCallStackSymbolMsg.length) { + break; + } + } + + return mainCallStackSymbolMsg; +} + + +/** + * 提示崩溃的信息(控制台输出、通知) + * + * @param exception 捕获到的异常 + * @param defaultToDo 这个框架里默认的做法 + */ ++ (void)noteErrorWithException:(NSException *)exception defaultToDo:(NSString *)defaultToDo { + + //堆栈数据 + NSArray *callStackSymbolsArr = [NSThread callStackSymbols]; + + //获取在哪个类的哪个方法中实例化的数组 字符串格式 -[类名 方法名] 或者 +[类名 方法名] + NSString *mainCallStackSymbolMsg = [AvoidCrash getMainCallStackSymbolMessageWithCallStackSymbols:callStackSymbolsArr]; + + if (mainCallStackSymbolMsg == nil) { + + mainCallStackSymbolMsg = @"崩溃方法定位失败,请您查看函数调用栈来排查错误原因"; + + } + + NSString *errorName = exception.name; + NSString *errorReason = exception.reason; + //errorReason 可能为 -[__NSCFConstantString avoidCrashCharacterAtIndex:]: Range or index out of bounds + //将avoidCrash去掉 + errorReason = [errorReason stringByReplacingOccurrencesOfString:@"avoidCrash" withString:@""]; + + NSString *errorPlace = [NSString stringWithFormat:@"Error Place:%@",mainCallStackSymbolMsg]; + + NSString *logErrorMessage = [NSString stringWithFormat:@"\n\n%@\n\n%@\n%@\n%@\n%@\n\n%@\n\n",AvoidCrashSeparatorWithFlag, errorName, errorReason, errorPlace, defaultToDo, AvoidCrashSeparator]; + AvoidCrashLog(@"%@",logErrorMessage); + + //请忽略下面的赋值,目的只是为了能顺利上传cocoapods + logErrorMessage = logErrorMessage; + + NSDictionary *errorInfoDic = @{ + key_errorName : errorName, + key_errorReason : errorReason, + key_errorPlace : errorPlace, + key_defaultToDo : defaultToDo, + key_exception : exception, + key_callStackSymbols : callStackSymbolsArr + }; + + //将错误信息放在字典里,用通知的形式发送出去 + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AvoidCrashNotification object:nil userInfo:errorInfoDic]; + }); + + +} + + +@end diff --git a/Ifish/AvoidCrash/NSArray+AvoidCrash.h b/Ifish/AvoidCrash/NSArray+AvoidCrash.h new file mode 100644 index 0000000..f57e93a --- /dev/null +++ b/Ifish/AvoidCrash/NSArray+AvoidCrash.h @@ -0,0 +1,25 @@ +// +// NSArray+AvoidCrash.h +// AvoidCrash +// +// Created by mac on 16/9/21. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import + +@interface NSArray (AvoidCrash) + ++ (void)avoidCrashExchangeMethod; + +@end + + +/** + * Can avoid crash method + * + * 1. NSArray的快速创建方式 NSArray *array = @[@"chenfanfang", @"AvoidCrash"]; //这种创建方式其实调用的是2中的方法 + * 2. +(instancetype)arrayWithObjects:(const id _Nonnull __unsafe_unretained *)objects count:(NSUInteger)cnt + * 3. - (id)objectAtIndex:(NSUInteger)index + * 4. - (void)getObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range + */ diff --git a/Ifish/AvoidCrash/NSArray+AvoidCrash.m b/Ifish/AvoidCrash/NSArray+AvoidCrash.m new file mode 100644 index 0000000..6ce49ef --- /dev/null +++ b/Ifish/AvoidCrash/NSArray+AvoidCrash.m @@ -0,0 +1,253 @@ +// +// NSArray+AvoidCrash.m +// AvoidCrash +// +// Created by mac on 16/9/21. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "NSArray+AvoidCrash.h" + +#import "AvoidCrash.h" + +@implementation NSArray (AvoidCrash) + + ++ (void)avoidCrashExchangeMethod { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + //================= + // class method + //================= + + //instance array method exchange + [AvoidCrash exchangeClassMethod:[self class] method1Sel:@selector(arrayWithObjects:count:) method2Sel:@selector(AvoidCrashArrayWithObjects:count:)]; + + + + //==================== + // instance method + //==================== + + Class __NSArray = NSClassFromString(@"NSArray"); + Class __NSArrayI = NSClassFromString(@"__NSArrayI"); + Class __NSSingleObjectArrayI = NSClassFromString(@"__NSSingleObjectArrayI"); + Class __NSArray0 = NSClassFromString(@"__NSArray0"); + + + //objectsAtIndexes: + [AvoidCrash exchangeInstanceMethod:__NSArray method1Sel:@selector(objectsAtIndexes:) method2Sel:@selector(avoidCrashObjectsAtIndexes:)]; + + + //objectAtIndex: + + [AvoidCrash exchangeInstanceMethod:__NSArrayI method1Sel:@selector(objectAtIndex:) method2Sel:@selector(__NSArrayIAvoidCrashObjectAtIndex:)]; + + [AvoidCrash exchangeInstanceMethod:__NSSingleObjectArrayI method1Sel:@selector(objectAtIndex:) method2Sel:@selector(__NSSingleObjectArrayIAvoidCrashObjectAtIndex:)]; + + [AvoidCrash exchangeInstanceMethod:__NSArray0 method1Sel:@selector(objectAtIndex:) method2Sel:@selector(__NSArray0AvoidCrashObjectAtIndex:)]; + + + //getObjects:range: + [AvoidCrash exchangeInstanceMethod:__NSArray method1Sel:@selector(getObjects:range:) method2Sel:@selector(NSArrayAvoidCrashGetObjects:range:)]; + + [AvoidCrash exchangeInstanceMethod:__NSSingleObjectArrayI method1Sel:@selector(getObjects:range:) method2Sel:@selector(__NSSingleObjectArrayIAvoidCrashGetObjects:range:)]; + + [AvoidCrash exchangeInstanceMethod:__NSArrayI method1Sel:@selector(getObjects:range:) method2Sel:@selector(__NSArrayIAvoidCrashGetObjects:range:)]; + }); + + +} + + +//================================================================= +// instance array +//================================================================= +#pragma mark - instance array + + ++ (instancetype)AvoidCrashArrayWithObjects:(const id _Nonnull __unsafe_unretained *)objects count:(NSUInteger)cnt { + + id instance = nil; + + @try { + instance = [self AvoidCrashArrayWithObjects:objects count:cnt]; + } + @catch (NSException *exception) { + + NSString *defaultToDo = @"This framework default is to remove nil object and instance a array."; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + + //以下是对错误数据的处理,把为nil的数据去掉,然后初始化数组 + NSInteger newObjsIndex = 0; + id _Nonnull __unsafe_unretained newObjects[cnt]; + + for (int i = 0; i < cnt; i++) { + if (objects[i] != nil) { + newObjects[newObjsIndex] = objects[i]; + newObjsIndex++; + } + } + instance = [self AvoidCrashArrayWithObjects:newObjects count:newObjsIndex]; + } + @finally { + return instance; + } +} + + + +//================================================================= +// objectAtIndexedSubscript: +//================================================================= +#pragma mark - objectAtIndexedSubscript: +- (id)avoidCrashObjectAtIndexedSubscript:(NSUInteger)idx { + id object = nil; + + @try { + object = [self avoidCrashObjectAtIndexedSubscript:idx]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } + +} + + +//================================================================= +// objectsAtIndexes: +//================================================================= +#pragma mark - objectsAtIndexes: + +- (NSArray *)avoidCrashObjectsAtIndexes:(NSIndexSet *)indexes { + + NSArray *returnArray = nil; + @try { + returnArray = [self avoidCrashObjectsAtIndexes:indexes]; + } @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + + } @finally { + return returnArray; + } +} + + +//================================================================= +// objectAtIndex: +//================================================================= +#pragma mark - objectAtIndex: + +//__NSArrayI objectAtIndex: +- (id)__NSArrayIAvoidCrashObjectAtIndex:(NSUInteger)index { + id object = nil; + + @try { + object = [self __NSArrayIAvoidCrashObjectAtIndex:index]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } +} + + + +//__NSSingleObjectArrayI objectAtIndex: +- (id)__NSSingleObjectArrayIAvoidCrashObjectAtIndex:(NSUInteger)index { + id object = nil; + + @try { + object = [self __NSSingleObjectArrayIAvoidCrashObjectAtIndex:index]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } +} + +//__NSArray0 objectAtIndex: +- (id)__NSArray0AvoidCrashObjectAtIndex:(NSUInteger)index { + id object = nil; + + @try { + object = [self __NSArray0AvoidCrashObjectAtIndex:index]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } +} + + +//================================================================= +// getObjects:range: +//================================================================= +#pragma mark - getObjects:range: + +//NSArray getObjects:range: +- (void)NSArrayAvoidCrashGetObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range { + + @try { + [self NSArrayAvoidCrashGetObjects:objects range:range]; + } @catch (NSException *exception) { + + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + + } @finally { + + } +} + + +//__NSSingleObjectArrayI getObjects:range: +- (void)__NSSingleObjectArrayIAvoidCrashGetObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range { + + @try { + [self __NSSingleObjectArrayIAvoidCrashGetObjects:objects range:range]; + } @catch (NSException *exception) { + + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + + } @finally { + + } +} + + +//__NSArrayI getObjects:range: +- (void)__NSArrayIAvoidCrashGetObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range { + + @try { + [self __NSArrayIAvoidCrashGetObjects:objects range:range]; + } @catch (NSException *exception) { + + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + + } @finally { + + } +} + + + + +@end diff --git a/Ifish/AvoidCrash/NSAttributedString+AvoidCrash.h b/Ifish/AvoidCrash/NSAttributedString+AvoidCrash.h new file mode 100644 index 0000000..6390ed4 --- /dev/null +++ b/Ifish/AvoidCrash/NSAttributedString+AvoidCrash.h @@ -0,0 +1,25 @@ +// +// NSAttributedString+AvoidCrash.h +// AvoidCrashDemo +// +// Created by mac on 16/10/15. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import + +@interface NSAttributedString (AvoidCrash) + ++ (void)avoidCrashExchangeMethod; + +@end + +/** + * Can avoid crash method + * + * 1.- (instancetype)initWithString:(NSString *)str + * 2.- (instancetype)initWithAttributedString:(NSAttributedString *)attrStr + * 3.- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary *)attrs + * + * + */ \ No newline at end of file diff --git a/Ifish/AvoidCrash/NSAttributedString+AvoidCrash.m b/Ifish/AvoidCrash/NSAttributedString+AvoidCrash.m new file mode 100644 index 0000000..4f2d7a4 --- /dev/null +++ b/Ifish/AvoidCrash/NSAttributedString+AvoidCrash.m @@ -0,0 +1,96 @@ +// +// NSAttributedString+AvoidCrash.m +// AvoidCrashDemo +// +// Created by mac on 16/10/15. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "NSAttributedString+AvoidCrash.h" + +#import "AvoidCrash.h" + +@implementation NSAttributedString (AvoidCrash) + ++ (void)avoidCrashExchangeMethod { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + Class NSConcreteAttributedString = NSClassFromString(@"NSConcreteAttributedString"); + + //initWithString: + [AvoidCrash exchangeInstanceMethod:NSConcreteAttributedString method1Sel:@selector(initWithString:) method2Sel:@selector(avoidCrashInitWithString:)]; + + //initWithAttributedString + [AvoidCrash exchangeInstanceMethod:NSConcreteAttributedString method1Sel:@selector(initWithAttributedString:) method2Sel:@selector(avoidCrashInitWithAttributedString:)]; + + //initWithString:attributes: + [AvoidCrash exchangeInstanceMethod:NSConcreteAttributedString method1Sel:@selector(initWithString:attributes:) method2Sel:@selector(avoidCrashInitWithString:attributes:)]; + }); + +} + +//================================================================= +// initWithString: +//================================================================= +#pragma mark - initWithString: + +- (instancetype)avoidCrashInitWithString:(NSString *)str { + id object = nil; + + @try { + object = [self avoidCrashInitWithString:str]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } +} + + +//================================================================= +// initWithAttributedString +//================================================================= +#pragma mark - initWithAttributedString + +- (instancetype)avoidCrashInitWithAttributedString:(NSAttributedString *)attrStr { + id object = nil; + + @try { + object = [self avoidCrashInitWithAttributedString:attrStr]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } +} + + +//================================================================= +// initWithString:attributes: +//================================================================= +#pragma mark - initWithString:attributes: + +- (instancetype)avoidCrashInitWithString:(NSString *)str attributes:(NSDictionary *)attrs { + id object = nil; + + @try { + object = [self avoidCrashInitWithString:str attributes:attrs]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } +} + +@end diff --git a/Ifish/AvoidCrash/NSDictionary+AvoidCrash.h b/Ifish/AvoidCrash/NSDictionary+AvoidCrash.h new file mode 100644 index 0000000..1554631 --- /dev/null +++ b/Ifish/AvoidCrash/NSDictionary+AvoidCrash.h @@ -0,0 +1,24 @@ +// +// NSDictionary+AvoidCrash.h +// AvoidCrash +// +// Created by mac on 16/9/21. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import + +@interface NSDictionary (AvoidCrash) + ++ (void)avoidCrashExchangeMethod; + +@end + + +/** + * Can avoid crash method + * + * 1. NSDictionary的快速创建方式 NSDictionary *dict = @{@"frameWork" : @"AvoidCrash"}; //这种创建方式其实调用的是2中的方法 + * 2. +(instancetype)dictionaryWithObjects:(const id _Nonnull __unsafe_unretained *)objects forKeys:(const id _Nonnull __unsafe_unretained *)keys count:(NSUInteger)cnt + * + */ \ No newline at end of file diff --git a/Ifish/AvoidCrash/NSDictionary+AvoidCrash.m b/Ifish/AvoidCrash/NSDictionary+AvoidCrash.m new file mode 100644 index 0000000..0e14762 --- /dev/null +++ b/Ifish/AvoidCrash/NSDictionary+AvoidCrash.m @@ -0,0 +1,56 @@ +// +// NSDictionary+AvoidCrash.m +// AvoidCrash +// +// Created by mac on 16/9/21. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "NSDictionary+AvoidCrash.h" + +#import "AvoidCrash.h" + +@implementation NSDictionary (AvoidCrash) + ++ (void)avoidCrashExchangeMethod { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + [AvoidCrash exchangeClassMethod:self method1Sel:@selector(dictionaryWithObjects:forKeys:count:) method2Sel:@selector(avoidCrashDictionaryWithObjects:forKeys:count:)]; + }); +} + + ++ (instancetype)avoidCrashDictionaryWithObjects:(const id _Nonnull __unsafe_unretained *)objects forKeys:(const id _Nonnull __unsafe_unretained *)keys count:(NSUInteger)cnt { + + id instance = nil; + + @try { + instance = [self avoidCrashDictionaryWithObjects:objects forKeys:keys count:cnt]; + } + @catch (NSException *exception) { + + NSString *defaultToDo = @"This framework default is to remove nil key-values and instance a dictionary."; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + + //处理错误的数据,然后重新初始化一个字典 + NSUInteger index = 0; + id _Nonnull __unsafe_unretained newObjects[cnt]; + id _Nonnull __unsafe_unretained newkeys[cnt]; + + for (int i = 0; i < cnt; i++) { + if (objects[i] && keys[i]) { + newObjects[index] = objects[i]; + newkeys[index] = keys[i]; + index++; + } + } + instance = [self avoidCrashDictionaryWithObjects:newObjects forKeys:newkeys count:index]; + } + @finally { + return instance; + } +} + +@end diff --git a/Ifish/AvoidCrash/NSMutableArray+AvoidCrash.h b/Ifish/AvoidCrash/NSMutableArray+AvoidCrash.h new file mode 100644 index 0000000..57addff --- /dev/null +++ b/Ifish/AvoidCrash/NSMutableArray+AvoidCrash.h @@ -0,0 +1,26 @@ +// +// NSMutableArray+AvoidCrash.h +// AvoidCrash +// +// Created by mac on 16/9/21. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import + +@interface NSMutableArray (AvoidCrash) + ++ (void)avoidCrashExchangeMethod; + +@end + + +/** + * Can avoid crash method + * + * 1. - (id)objectAtIndex:(NSUInteger)index + * 2. - (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx + * 3. - (void)removeObjectAtIndex:(NSUInteger)index + * 4. - (void)insertObject:(id)anObject atIndex:(NSUInteger)index + * 5. - (void)getObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range + */ diff --git a/Ifish/AvoidCrash/NSMutableArray+AvoidCrash.m b/Ifish/AvoidCrash/NSMutableArray+AvoidCrash.m new file mode 100644 index 0000000..0397f5a --- /dev/null +++ b/Ifish/AvoidCrash/NSMutableArray+AvoidCrash.m @@ -0,0 +1,143 @@ +// +// NSMutableArray+AvoidCrash.m +// AvoidCrash +// +// Created by mac on 16/9/21. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "NSMutableArray+AvoidCrash.h" + +#import "AvoidCrash.h" + +@implementation NSMutableArray (AvoidCrash) + ++ (void)avoidCrashExchangeMethod { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + Class arrayMClass = NSClassFromString(@"__NSArrayM"); + + + //objectAtIndex: + [AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(objectAtIndex:) method2Sel:@selector(avoidCrashObjectAtIndex:)]; + + //setObject:atIndexedSubscript: + [AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(setObject:atIndexedSubscript:) method2Sel:@selector(avoidCrashSetObject:atIndexedSubscript:)]; + + + //removeObjectAtIndex: + [AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(removeObjectAtIndex:) method2Sel:@selector(avoidCrashRemoveObjectAtIndex:)]; + + //insertObject:atIndex: + [AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(insertObject:atIndex:) method2Sel:@selector(avoidCrashInsertObject:atIndex:)]; + + //getObjects:range: + [AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(getObjects:range:) method2Sel:@selector(avoidCrashGetObjects:range:)]; + }); + + + +} + + +//================================================================= +// array set object at index +//================================================================= +#pragma mark - get object from array + + +- (void)avoidCrashSetObject:(id)obj atIndexedSubscript:(NSUInteger)idx { + + @try { + [self avoidCrashSetObject:obj atIndexedSubscript:idx]; + } + @catch (NSException *exception) { + [AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; + } + @finally { + + } +} + + +//================================================================= +// removeObjectAtIndex: +//================================================================= +#pragma mark - removeObjectAtIndex: + +- (void)avoidCrashRemoveObjectAtIndex:(NSUInteger)index { + @try { + [self avoidCrashRemoveObjectAtIndex:index]; + } + @catch (NSException *exception) { + [AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; + } + @finally { + + } +} + + +//================================================================= +// insertObject:atIndex: +//================================================================= +#pragma mark - set方法 +- (void)avoidCrashInsertObject:(id)anObject atIndex:(NSUInteger)index { + @try { + [self avoidCrashInsertObject:anObject atIndex:index]; + } + @catch (NSException *exception) { + [AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; + } + @finally { + + } +} + + +//================================================================= +// objectAtIndex: +//================================================================= +#pragma mark - objectAtIndex: + +- (id)avoidCrashObjectAtIndex:(NSUInteger)index { + id object = nil; + + @try { + object = [self avoidCrashObjectAtIndex:index]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } +} + + +//================================================================= +// getObjects:range: +//================================================================= +#pragma mark - getObjects:range: + +- (void)avoidCrashGetObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range { + + @try { + [self avoidCrashGetObjects:objects range:range]; + } @catch (NSException *exception) { + + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + + } @finally { + + } +} + + + + +@end diff --git a/Ifish/AvoidCrash/NSMutableAttributedString+AvoidCrash.h b/Ifish/AvoidCrash/NSMutableAttributedString+AvoidCrash.h new file mode 100644 index 0000000..58808ac --- /dev/null +++ b/Ifish/AvoidCrash/NSMutableAttributedString+AvoidCrash.h @@ -0,0 +1,23 @@ +// +// NSMutableAttributedString+AvoidCrash.h +// AvoidCrashDemo +// +// Created by mac on 16/10/15. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import + +@interface NSMutableAttributedString (AvoidCrash) + ++ (void)avoidCrashExchangeMethod; + +@end + + +/** + * Can avoid crash method + * + * 1.- (instancetype)initWithString:(NSString *)str + * 2.- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary *)attrs + */ \ No newline at end of file diff --git a/Ifish/AvoidCrash/NSMutableAttributedString+AvoidCrash.m b/Ifish/AvoidCrash/NSMutableAttributedString+AvoidCrash.m new file mode 100644 index 0000000..9db3812 --- /dev/null +++ b/Ifish/AvoidCrash/NSMutableAttributedString+AvoidCrash.m @@ -0,0 +1,74 @@ +// +// NSMutableAttributedString+AvoidCrash.m +// AvoidCrashDemo +// +// Created by mac on 16/10/15. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "NSMutableAttributedString+AvoidCrash.h" + +#import "AvoidCrash.h" + +@implementation NSMutableAttributedString (AvoidCrash) + ++ (void)avoidCrashExchangeMethod { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + Class NSConcreteMutableAttributedString = NSClassFromString(@"NSConcreteMutableAttributedString"); + + //initWithString: + [AvoidCrash exchangeInstanceMethod:NSConcreteMutableAttributedString method1Sel:@selector(initWithString:) method2Sel:@selector(avoidCrashInitWithString:)]; + + //initWithString:attributes: + [AvoidCrash exchangeInstanceMethod:NSConcreteMutableAttributedString method1Sel:@selector(initWithString:attributes:) method2Sel:@selector(avoidCrashInitWithString:attributes:)]; + }); +} + +//================================================================= +// initWithString: +//================================================================= +#pragma mark - initWithString: + + +- (instancetype)avoidCrashInitWithString:(NSString *)str { + id object = nil; + + @try { + object = [self avoidCrashInitWithString:str]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } +} + + +//================================================================= +// initWithString:attributes: +//================================================================= +#pragma mark - initWithString:attributes: + + +- (instancetype)avoidCrashInitWithString:(NSString *)str attributes:(NSDictionary *)attrs { + id object = nil; + + @try { + object = [self avoidCrashInitWithString:str attributes:attrs]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return object; + } +} + + +@end diff --git a/Ifish/AvoidCrash/NSMutableDictionary+AvoidCrash.h b/Ifish/AvoidCrash/NSMutableDictionary+AvoidCrash.h new file mode 100644 index 0000000..d691a88 --- /dev/null +++ b/Ifish/AvoidCrash/NSMutableDictionary+AvoidCrash.h @@ -0,0 +1,24 @@ +// +// NSMutableDictionary+AvoidCrash.h +// AvoidCrash +// +// Created by mac on 16/9/22. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import + +@interface NSMutableDictionary (AvoidCrash) + ++ (void)avoidCrashExchangeMethod; + +@end + + +/** + * Can avoid crash method + * + * 1. - (void)setObject:(id)anObject forKey:(id)aKey + * 2. - (void)removeObjectForKey:(id)aKey + * + */ \ No newline at end of file diff --git a/Ifish/AvoidCrash/NSMutableDictionary+AvoidCrash.m b/Ifish/AvoidCrash/NSMutableDictionary+AvoidCrash.m new file mode 100644 index 0000000..9518bde --- /dev/null +++ b/Ifish/AvoidCrash/NSMutableDictionary+AvoidCrash.m @@ -0,0 +1,72 @@ +// +// NSMutableDictionary+AvoidCrash.m +// AvoidCrash +// +// Created by mac on 16/9/22. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "NSMutableDictionary+AvoidCrash.h" + +#import "AvoidCrash.h" + +@implementation NSMutableDictionary (AvoidCrash) + ++ (void)avoidCrashExchangeMethod { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Class dictionaryM = NSClassFromString(@"__NSDictionaryM"); + + //setObject:forKey: + [AvoidCrash exchangeInstanceMethod:dictionaryM method1Sel:@selector(setObject:forKey:) method2Sel:@selector(avoidCrashSetObject:forKey:)]; + + + //removeObjectForKey: + Method removeObjectForKey = class_getInstanceMethod(dictionaryM, @selector(removeObjectForKey:)); + Method avoidCrashRemoveObjectForKey = class_getInstanceMethod(dictionaryM, @selector(avoidCrashRemoveObjectForKey:)); + method_exchangeImplementations(removeObjectForKey, avoidCrashRemoveObjectForKey); + }); +} + + +//================================================================= +// setObject:forKey: +//================================================================= +#pragma mark - setObject:forKey: + +- (void)avoidCrashSetObject:(id)anObject forKey:(id)aKey { + + @try { + [self avoidCrashSetObject:anObject forKey:aKey]; + } + @catch (NSException *exception) { + [AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; + } + @finally { + + } +} + +//================================================================= +// removeObjectForKey: +//================================================================= +#pragma mark - removeObjectForKey: + +- (void)avoidCrashRemoveObjectForKey:(id)aKey { + + @try { + [self avoidCrashRemoveObjectForKey:aKey]; + } + @catch (NSException *exception) { + [AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; + } + @finally { + + } +} + + + + +@end diff --git a/Ifish/AvoidCrash/NSMutableString+AvoidCrash.h b/Ifish/AvoidCrash/NSMutableString+AvoidCrash.h new file mode 100644 index 0000000..3826299 --- /dev/null +++ b/Ifish/AvoidCrash/NSMutableString+AvoidCrash.h @@ -0,0 +1,29 @@ +// +// NSMutableString+AvoidCrash.h +// AvoidCrashDemo +// +// Created by mac on 16/10/6. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import + +@interface NSMutableString (AvoidCrash) + ++ (void)avoidCrashExchangeMethod; + +@end + + +/** + * Can avoid crash method + * + * 1. 由于NSMutableString是继承于NSString,所以这里和NSString有些同样的方法就不重复写了 + * 2. - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString + * 3. - (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc + * 4. - (void)deleteCharactersInRange:(NSRange)range + * + */ + + + diff --git a/Ifish/AvoidCrash/NSMutableString+AvoidCrash.m b/Ifish/AvoidCrash/NSMutableString+AvoidCrash.m new file mode 100644 index 0000000..61dd57d --- /dev/null +++ b/Ifish/AvoidCrash/NSMutableString+AvoidCrash.m @@ -0,0 +1,97 @@ +// +// NSMutableString+AvoidCrash.m +// AvoidCrashDemo +// +// Created by mac on 16/10/6. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "NSMutableString+AvoidCrash.h" + +#import "AvoidCrash.h" + +@implementation NSMutableString (AvoidCrash) + ++ (void)avoidCrashExchangeMethod { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + Class stringClass = NSClassFromString(@"__NSCFString"); + + //replaceCharactersInRange + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(replaceCharactersInRange:withString:) method2Sel:@selector(avoidCrashReplaceCharactersInRange:withString:)]; + + //insertString:atIndex: + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(insertString:atIndex:) method2Sel:@selector(avoidCrashInsertString:atIndex:)]; + + //deleteCharactersInRange + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(deleteCharactersInRange:) method2Sel:@selector(avoidCrashDeleteCharactersInRange:)]; + }); +} + +//================================================================= +// replaceCharactersInRange +//================================================================= +#pragma mark - replaceCharactersInRange + +- (void)avoidCrashReplaceCharactersInRange:(NSRange)range withString:(NSString *)aString { + + @try { + [self avoidCrashReplaceCharactersInRange:range withString:aString]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + + } +} + +//================================================================= +// insertString:atIndex: +//================================================================= +#pragma mark - insertString:atIndex: + +- (void)avoidCrashInsertString:(NSString *)aString atIndex:(NSUInteger)loc { + + @try { + [self avoidCrashInsertString:aString atIndex:loc]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + + } +} + +//================================================================= +// deleteCharactersInRange +//================================================================= +#pragma mark - deleteCharactersInRange + +- (void)avoidCrashDeleteCharactersInRange:(NSRange)range { + + @try { + [self avoidCrashDeleteCharactersInRange:range]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + + } +} + + + + + + + + +@end diff --git a/Ifish/AvoidCrash/NSObject+AvoidCrash.h b/Ifish/AvoidCrash/NSObject+AvoidCrash.h new file mode 100644 index 0000000..01de329 --- /dev/null +++ b/Ifish/AvoidCrash/NSObject+AvoidCrash.h @@ -0,0 +1,25 @@ +// +// NSObject+AvoidCrash.h +// AvoidCrashDemo +// +// Created by mac on 16/10/11. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import + +@interface NSObject (AvoidCrash) + ++ (void)avoidCrashExchangeMethod; + +@end + +/** + * Can avoid crash method + * + * 1.- (void)setValue:(id)value forKey:(NSString *)key + * 2.- (void)setValue:(id)value forKeyPath:(NSString *)keyPath + * 3.- (void)setValue:(id)value forUndefinedKey:(NSString *)key //这个方法一般用来重写,不会主动调用 + * 4.- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues + * + */ \ No newline at end of file diff --git a/Ifish/AvoidCrash/NSObject+AvoidCrash.m b/Ifish/AvoidCrash/NSObject+AvoidCrash.m new file mode 100644 index 0000000..0513a49 --- /dev/null +++ b/Ifish/AvoidCrash/NSObject+AvoidCrash.m @@ -0,0 +1,114 @@ +// +// NSObject+AvoidCrash.m +// AvoidCrashDemo +// +// Created by mac on 16/10/11. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "NSObject+AvoidCrash.h" + +#import "AvoidCrash.h" + +@implementation NSObject (AvoidCrash) + ++ (void)avoidCrashExchangeMethod { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + //setValue:forKey: + [AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(setValue:forKey:) method2Sel:@selector(avoidCrashSetValue:forKey:)]; + + //setValue:forKeyPath: + [AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(setValue:forKeyPath:) method2Sel:@selector(avoidCrashSetValue:forKeyPath:)]; + + //setValue:forUndefinedKey: + [AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(setValue:forUndefinedKey:) method2Sel:@selector(avoidCrashSetValue:forUndefinedKey:)]; + + //setValuesForKeysWithDictionary: + [AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(setValuesForKeysWithDictionary:) method2Sel:@selector(avoidCrashSetValuesForKeysWithDictionary:)]; + }); + + +} + + + +//================================================================= +// setValue:forKey: +//================================================================= +#pragma mark - setValue:forKey: + +- (void)avoidCrashSetValue:(id)value forKey:(NSString *)key { + @try { + [self avoidCrashSetValue:value forKey:key]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + + } +} + + +//================================================================= +// setValue:forKeyPath: +//================================================================= +#pragma mark - setValue:forKeyPath: + +- (void)avoidCrashSetValue:(id)value forKeyPath:(NSString *)keyPath { + @try { + [self avoidCrashSetValue:value forKeyPath:keyPath]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + + } +} + + + +//================================================================= +// setValue:forUndefinedKey: +//================================================================= +#pragma mark - setValue:forUndefinedKey: + +- (void)avoidCrashSetValue:(id)value forUndefinedKey:(NSString *)key { + @try { + [self avoidCrashSetValue:value forUndefinedKey:key]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + + } +} + + +//================================================================= +// setValuesForKeysWithDictionary: +//================================================================= +#pragma mark - setValuesForKeysWithDictionary: + +- (void)avoidCrashSetValuesForKeysWithDictionary:(NSDictionary *)keyedValues { + @try { + [self avoidCrashSetValuesForKeysWithDictionary:keyedValues]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultIgnore; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + + } +} + + +@end diff --git a/Ifish/AvoidCrash/NSString+AvoidCrash.h b/Ifish/AvoidCrash/NSString+AvoidCrash.h new file mode 100644 index 0000000..a8d17a7 --- /dev/null +++ b/Ifish/AvoidCrash/NSString+AvoidCrash.h @@ -0,0 +1,29 @@ +// +// NSString+AvoidCrash.h +// AvoidCrashDemo +// +// Created by mac on 16/10/5. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import + +@interface NSString (AvoidCrash) + ++ (void)avoidCrashExchangeMethod; + +@end + + +/** + * Can avoid crash method + * + * 1. - (unichar)characterAtIndex:(NSUInteger)index + * 2. - (NSString *)substringFromIndex:(NSUInteger)from + * 3. - (NSString *)substringToIndex:(NSUInteger)to { + * 4. - (NSString *)substringWithRange:(NSRange)range { + * 5. - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement + * 6. - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange + * 7. - (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement + * + */ \ No newline at end of file diff --git a/Ifish/AvoidCrash/NSString+AvoidCrash.m b/Ifish/AvoidCrash/NSString+AvoidCrash.m new file mode 100644 index 0000000..e7196c7 --- /dev/null +++ b/Ifish/AvoidCrash/NSString+AvoidCrash.m @@ -0,0 +1,204 @@ +// +// NSString+AvoidCrash.m +// AvoidCrashDemo +// +// Created by mac on 16/10/5. +// Copyright © 2016年 chenfanfang. All rights reserved. +// + +#import "NSString+AvoidCrash.h" + +#import "AvoidCrash.h" + +@implementation NSString (AvoidCrash) + ++ (void)avoidCrashExchangeMethod { + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Class stringClass = NSClassFromString(@"__NSCFConstantString"); + + //characterAtIndex + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(characterAtIndex:) method2Sel:@selector(avoidCrashCharacterAtIndex:)]; + + //substringFromIndex + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(substringFromIndex:) method2Sel:@selector(avoidCrashSubstringFromIndex:)]; + + //substringToIndex + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(substringToIndex:) method2Sel:@selector(avoidCrashSubstringToIndex:)]; + + //substringWithRange: + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(substringWithRange:) method2Sel:@selector(avoidCrashSubstringWithRange:)]; + + //stringByReplacingOccurrencesOfString: + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(stringByReplacingOccurrencesOfString:withString:) method2Sel:@selector(avoidCrashStringByReplacingOccurrencesOfString:withString:)]; + + //stringByReplacingOccurrencesOfString:withString:options:range: + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(stringByReplacingOccurrencesOfString:withString:options:range:) method2Sel:@selector(avoidCrashStringByReplacingOccurrencesOfString:withString:options:range:)]; + + //stringByReplacingCharactersInRange:withString: + [AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(stringByReplacingCharactersInRange:withString:) method2Sel:@selector(avoidCrashStringByReplacingCharactersInRange:withString:)]; + }); + +} + + +//================================================================= +// characterAtIndex: +//================================================================= +#pragma mark - characterAtIndex: + +- (unichar)avoidCrashCharacterAtIndex:(NSUInteger)index { + + unichar characteristic; + @try { + characteristic = [self avoidCrashCharacterAtIndex:index]; + } + @catch (NSException *exception) { + + NSString *defaultToDo = @"This framework default is to return a without assign unichar."; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + } + @finally { + return characteristic; + } +} + +//================================================================= +// substringFromIndex: +//================================================================= +#pragma mark - substringFromIndex: + +- (NSString *)avoidCrashSubstringFromIndex:(NSUInteger)from { + + NSString *subString = nil; + + @try { + subString = [self avoidCrashSubstringFromIndex:from]; + } + @catch (NSException *exception) { + + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + subString = nil; + } + @finally { + return subString; + } +} + +//================================================================= +// substringToIndex +//================================================================= +#pragma mark - substringToIndex + +- (NSString *)avoidCrashSubstringToIndex:(NSUInteger)to { + + NSString *subString = nil; + + @try { + subString = [self avoidCrashSubstringToIndex:to]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + subString = nil; + } + @finally { + return subString; + } +} + + +//================================================================= +// substringWithRange: +//================================================================= +#pragma mark - substringWithRange: + +- (NSString *)avoidCrashSubstringWithRange:(NSRange)range { + + NSString *subString = nil; + + @try { + subString = [self avoidCrashSubstringWithRange:range]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + subString = nil; + } + @finally { + return subString; + } +} + +//================================================================= +// stringByReplacingOccurrencesOfString: +//================================================================= +#pragma mark - stringByReplacingOccurrencesOfString: + +- (NSString *)avoidCrashStringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement { + + NSString *newStr = nil; + + @try { + newStr = [self avoidCrashStringByReplacingOccurrencesOfString:target withString:replacement]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + newStr = nil; + } + @finally { + return newStr; + } +} + +//================================================================= +// stringByReplacingOccurrencesOfString:withString:options:range: +//================================================================= +#pragma mark - stringByReplacingOccurrencesOfString:withString:options:range: + +- (NSString *)avoidCrashStringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange { + + NSString *newStr = nil; + + @try { + newStr = [self avoidCrashStringByReplacingOccurrencesOfString:target withString:replacement options:options range:searchRange]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + newStr = nil; + } + @finally { + return newStr; + } +} + + +//================================================================= +// stringByReplacingCharactersInRange:withString: +//================================================================= +#pragma mark - stringByReplacingCharactersInRange:withString: + +- (NSString *)avoidCrashStringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement { + + + NSString *newStr = nil; + + @try { + newStr = [self avoidCrashStringByReplacingCharactersInRange:range withString:replacement]; + } + @catch (NSException *exception) { + NSString *defaultToDo = AvoidCrashDefaultReturnNil; + [AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; + newStr = nil; + } + @finally { + return newStr; + } +} + + +@end diff --git a/Ifish/Info.plist b/Ifish/Info.plist index 0ac08f2..709a8d9 100644 --- a/Ifish/Info.plist +++ b/Ifish/Info.plist @@ -70,7 +70,7 @@ CFBundleVersion - $(CURRENT_PROJECT_VERSION) + 4 ITSAppUsesNonExemptEncryption LSApplicationCategoryType @@ -407,6 +407,8 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIUserInterfaceStyle + Light UIViewControllerBasedStatusBarAppearance diff --git a/Ifish/controllers/ConnectAauariumVC/ConAquarChooseWiFiVC.m b/Ifish/controllers/ConnectAauariumVC/ConAquarChooseWiFiVC.m index 737af1a..e7192c8 100644 --- a/Ifish/controllers/ConnectAauariumVC/ConAquarChooseWiFiVC.m +++ b/Ifish/controllers/ConnectAauariumVC/ConAquarChooseWiFiVC.m @@ -50,6 +50,10 @@ Assign BOOL isGoChangeWiFi;//更换为设备的WiFi if (!_topImage) { _topImage = InitObject(UIImageView); [_topImage setImage:IMAGEBYENAME(@"icons_con_topbg")]; + if (self.deviceType==DEVICECAMERA) + { + [_topImage setImage:IMAGEBYENAME(@"apcoonetc")]; + } } return _topImage; } @@ -74,7 +78,7 @@ Assign BOOL isGoChangeWiFi;//更换为设备的WiFi if (self.deviceType==DEVICECAMERA) { - tip1=@"1.请长按摄像头背后复位孔,复位摄像头,复位后15秒内断电通电3次进入热点模式;"; + tip1=@"1.请长按摄像头背后复位孔,复位摄像头,进入热点模式"; tip2=@"2.点击去设置:设置-WiFi-选择GW-AP-xxx的网络,一般无密码或12345678或查看说明书,连接好后返回爱奇鱼app。"; } NSArray*textArr=@[tip1,tip2]; diff --git a/Ifish/controllers/IfishYooseeFile/IfishYooseeControlller/YooseeNextConnectViewController.mm b/Ifish/controllers/IfishYooseeFile/IfishYooseeControlller/YooseeNextConnectViewController.mm index be48e9a..3a54ae1 100644 --- a/Ifish/controllers/IfishYooseeFile/IfishYooseeControlller/YooseeNextConnectViewController.mm +++ b/Ifish/controllers/IfishYooseeFile/IfishYooseeControlller/YooseeNextConnectViewController.mm @@ -644,6 +644,7 @@ self.attentionLabel.text=@"1、请长按摄像头背后复位孔,复位摄像 self.sBtn.hidden = YES; self.nodImg.hidden = YES; self.redTipLable.hidden=YES; + self.attentionLabel.hidden=YES; } -(void)wifiviewkeyboardWillHide:(NSNotification *)notify{