//
|
// NSDictionary+log.m
|
// HNSHPDA
|
//
|
// Created by Huitu on 2021/1/21.
|
// Copyright © 2021 慧图移动. All rights reserved.
|
//
|
|
#import "NSDictionary+log.h"
|
#import <objc/runtime.h>
|
|
@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
|