Ios runtime swizzle
#import
@ Implementation NSObject (Extension) + (void) extends :( Class) class originSelector :( SEL) originSelector otherSelector :( SEL) otherSelector {Method othermehtodd = class_getClassMethod (class, otherSelector ); method originmehtodd = class_getClassMethod (class, originSelector); // The implementation of the two methods method_exchangeImplementations (othermehtodd, originmehtodd);} + (void) vertex :( Class) class originSele Ctor :( SEL) originSelector otherSelector :( SEL) otherSelector {Method othermehtodd = Week (class, otherSelector); Method originmehtodd = class_getInstanceMethod (class, originSelector ); // exchange two methods to achieve method_exchangeImplementations (othermehtodd, originmehtodd);} @ end @ implementation NSArray (Extension) + (void) load {[self swizzleInstanceMethod: NSClassFromString (@ "_ NSArrayI") originSelector: @ se Lector (objectAtIndex :) otherSelector: @ selector (hm_objectAtIndex :)];}-(id) hm_objectAtIndex :( NSUInteger) index {if (index <self. count) {return [self hm_objectAtIndex: index];} else {return nil ;}@end @ implementation NSMutableArray (Extension) + (void) load {[self swizzleInstanceMethod: NSClassFromString (@ "_ NSArrayM") originSelector: @ selector (addObject :) otherSelector: @ selector (hm_addObject :)]; [self Outputs: NSClassFromString (@ "_ NSArrayM") originSelector: @ selector (objectAtIndex :) otherSelector: @ selector (hm_objectAtIndex :)];}-(void) hm_addObject :( id) object {if (object! = Nil) {[self hm_addObject: object] ;}}- (id) hm_objectAtIndex :( NSUInteger) index {if (index <self. count) {return [self hm_objectAtIndex: index];} else {return nil ;}}@ end