// // MJFoundation.m // MJExtensionExample // // Created by MJ Lee on 14/7/16. // Copyright (c) 2014年 小码哥. All rights reserved. // #import "MJFoundation.h" #import "MJExtensionConst.h" #import @implementation MJFoundation + (BOOL)isClassFromFoundation:(Class)c { if (c == [NSObject class] || c == [NSManagedObject class]) return YES; static NSSet *foundationClasses; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ // 集合中没有NSObject,因为几乎所有的类都是继承自NSObject,具体是不是NSObject需要特殊判断 foundationClasses = [NSSet setWithObjects: [NSURL class], [NSDate class], [NSValue class], [NSData class], [NSError class], [NSArray class], [NSDictionary class], [NSString class], [NSAttributedString class], nil]; }); __block BOOL result = NO; [foundationClasses enumerateObjectsUsingBlock:^(Class foundationClass, BOOL *stop) { if ([c isSubclassOfClass:foundationClass]) { result = YES; *stop = YES; } }]; return result; } @end