参考网址:http://blog.devtang.com/blog/2013/10/15/objective-c-object-model/
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)+ (void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ [self hackForImagePicker]; });}+ (void)hackForImagePicker { // fix bug of image picker under iOS 6.0 // http://stackoverflow.com/questions/12522491/crash-on-presenting-uiimagepickercontroller-under-ios-6-0 if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0") && SYSTEM_VERSION_LESS_THAN(@"6.1")) { Method oldMethod1 = class_getInstanceMethod([UIImagePickerController class], @selector(shouldAutorotate)); Method newMethod1 = class_getInstanceMethod([ImagePickerReplaceMethodsHolder class], @selector(shouldAutorotate)); method_setImplementation(oldMethod1, method_getImplementation(newMethod1)); Method oldMethod2 = class_getInstanceMethod([UIImagePickerController class], @selector(preferredInterfaceOrientationForPresentation)); Method newMethod2 = class_getInstanceMethod([ImagePickerReplaceMethodsHolder class], @selector(preferredInterfaceOrientationForPresentation)); method_setImplementation(oldMethod2, method_getImplementation(newMethod2)); }}