1. 程式人生 > >MJExtension底層實現原理簡單剖析

MJExtension底層實現原理簡單剖析

- (instancetype)initWithTypeString:(NSString *)string { if (self = [super init]) { NSUInteger loc = 1; NSUInteger len = [string rangeOfString:@","].location - loc; NSString *typeCode = [string substringWithRange:NSMakeRange(loc, len)]; [self getTypeCode:typeCode]; NSLog
(@"%@",typeCode); } return self; } - (void)getTypeCode:(NSString *)code { if ([code isEqualToString:MJPropertyTypeId]) { _idType = YES; } else if (code.length > 3 && [code hasPrefix:@"@\""]) { // 去掉@"和",擷取中間的型別名稱 _code = [code substringWithRange:NSMakeRange
(2, code.length - 3)]; _typeClass = NSClassFromString(_code); _numberType = (_typeClass == [NSNumber class] || [_typeClass isSubclassOfClass:[NSNumber class]]); } // 是否為數字型別 NSString *lowerCode = _code.lowercaseString; NSArray *numberTypes = @[MJPropertyTypeInt, MJPropertyTypeShort, MJPropertyTypeBOOL1, MJPropertyTypeBOOL2, MJPropertyTypeFloat, MJPropertyTypeDouble, MJPropertyTypeLong, MJPropertyTypeChar]; if
([numberTypes containsObject:lowerCode]) { _numberType = YES; if ([lowerCode isEqualToString:MJPropertyTypeBOOL1] || [lowerCode isEqualToString:MJPropertyTypeBOOL2]) { _boolType = YES; } } }