// // NSDictionary+log.m // HNSHPDA // // Created by Huitu on 2021/1/21. // Copyright © 2021 慧图移动. All rights reserved. // #import "NSDictionary+log.h" #import @implementation NSDictionary (log) + (void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ zx_swizzleSelector([self class], @selector(descriptionWithLocale:indent:), @selector(zx_descriptionWithLocale:indent:)); }); } - (NSString *)zx_descriptionWithLocale:(id)locale indent:(NSUInteger)level { return [self stringByReplaceUnicode:[self zx_descriptionWithLocale:locale indent:level]]; } - (NSString *)stringByReplaceUnicode:(NSString *)unicodeString { NSMutableString *convertedString = [unicodeString mutableCopy]; [convertedString replaceOccurrencesOfString:@"\\U" withString:@"\\u" options:0 range:NSMakeRange(0, convertedString.length)]; CFStringRef transform = CFSTR("Any-Hex/Java"); CFStringTransform((__bridge CFMutableStringRef)convertedString, NULL, transform, YES); return convertedString; } static inline void zx_swizzleSelector(Class theClass, SEL originalSelector, SEL swizzledSelector) { Method originalMethod = class_getInstanceMethod(theClass, originalSelector); Method swizzledMethod = class_getInstanceMethod(theClass, swizzledSelector); BOOL didAddMethod = class_addMethod(theClass, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod)); if (didAddMethod) { class_replaceMethod(theClass, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); } else { method_exchangeImplementations(originalMethod, swizzledMethod); } } @end