From 4a66001149b05686814b9fef885920c05123f419 Mon Sep 17 00:00:00 2001 From: hexiaoyi Date: Fri, 20 Oct 2017 15:58:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E5=AF=B9iOS=2011?= =?UTF-8?q?=E7=9A=84NSArray,NSMutableArray,NSMutableDictionary=E7=9A=84?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AvoidCrash/NSArray+AvoidCrash.m | 8 ++++++-- AvoidCrash/NSMutableArray+AvoidCrash.m | 6 +++++- AvoidCrash/NSMutableDictionary+AvoidCrash.m | 9 ++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/AvoidCrash/NSArray+AvoidCrash.m b/AvoidCrash/NSArray+AvoidCrash.m index cf2fa8b..78a4f04 100644 --- a/AvoidCrash/NSArray+AvoidCrash.m +++ b/AvoidCrash/NSArray+AvoidCrash.m @@ -41,8 +41,12 @@ + (void)avoidCrashExchangeMethod { //objectAtIndex: - - [AvoidCrash exchangeInstanceMethod:__NSArrayI method1Sel:@selector(objectAtIndex:) method2Sel:@selector(__NSArrayIAvoidCrashObjectAtIndex:)]; + if (@available(iOS 11.0, *)) { + [AvoidCrash exchangeInstanceMethod:__NSArrayI method1Sel:@selector(objectAtIndexedSubscript:) method2Sel:@selector(__NSArrayIAvoidCrashObjectAtIndex:)]; + }else{ + + [AvoidCrash exchangeInstanceMethod:__NSArrayI method1Sel:@selector(objectAtIndex:) method2Sel:@selector(__NSArrayIAvoidCrashObjectAtIndex:)]; + } [AvoidCrash exchangeInstanceMethod:__NSSingleObjectArrayI method1Sel:@selector(objectAtIndex:) method2Sel:@selector(__NSSingleObjectArrayIAvoidCrashObjectAtIndex:)]; diff --git a/AvoidCrash/NSMutableArray+AvoidCrash.m b/AvoidCrash/NSMutableArray+AvoidCrash.m index 0b28942..883623c 100644 --- a/AvoidCrash/NSMutableArray+AvoidCrash.m +++ b/AvoidCrash/NSMutableArray+AvoidCrash.m @@ -21,7 +21,11 @@ + (void)avoidCrashExchangeMethod { //objectAtIndex: - [AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(objectAtIndex:) method2Sel:@selector(avoidCrashObjectAtIndex:)]; + if (@available(iOS 11.0, *)) { + [AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(objectAtIndexedSubscript:) method2Sel:@selector(avoidCrashObjectAtIndex:)]; + }else{ + [AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(objectAtIndex:) method2Sel:@selector(avoidCrashObjectAtIndex:)]; + } //setObject:atIndexedSubscript: [AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(setObject:atIndexedSubscript:) method2Sel:@selector(avoidCrashSetObject:atIndexedSubscript:)]; diff --git a/AvoidCrash/NSMutableDictionary+AvoidCrash.m b/AvoidCrash/NSMutableDictionary+AvoidCrash.m index 2653e6f..cf8deb2 100644 --- a/AvoidCrash/NSMutableDictionary+AvoidCrash.m +++ b/AvoidCrash/NSMutableDictionary+AvoidCrash.m @@ -19,7 +19,14 @@ + (void)avoidCrashExchangeMethod { Class dictionaryM = NSClassFromString(@"__NSDictionaryM"); //setObject:forKey: - [AvoidCrash exchangeInstanceMethod:dictionaryM method1Sel:@selector(setObject:forKey:) method2Sel:@selector(avoidCrashSetObject:forKey:)]; + + if (@available(iOS 11.0, *)) { + [AvoidCrash exchangeInstanceMethod:dictionaryM method1Sel:@selector(forKeyedSubscript:forKey:) method2Sel:@selector(avoidCrashSetObject:forKey:)]; + }else{ + [AvoidCrash exchangeInstanceMethod:dictionaryM method1Sel:@selector(setObject:forKey:) method2Sel:@selector(avoidCrashSetObject:forKey:)]; + } + + //removeObjectForKey: