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: