MJFoundation.m 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //
  2. // MJFoundation.m
  3. // MJExtensionExample
  4. //
  5. // Created by MJ Lee on 14/7/16.
  6. // Copyright (c) 2014年 小码哥. All rights reserved.
  7. //
  8. #import "MJFoundation.h"
  9. #import "MJExtensionConst.h"
  10. #import <CoreData/CoreData.h>
  11. static NSSet *foundationClasses_;
  12. @implementation MJFoundation
  13. + (NSSet *)foundationClasses
  14. {
  15. if (foundationClasses_ == nil) {
  16. // 集合中没有NSObject,因为几乎所有的类都是继承自NSObject,具体是不是NSObject需要特殊判断
  17. foundationClasses_ = [NSSet setWithObjects:
  18. [NSURL class],
  19. [NSDate class],
  20. [NSValue class],
  21. [NSData class],
  22. [NSError class],
  23. [NSArray class],
  24. [NSDictionary class],
  25. [NSString class],
  26. [NSAttributedString class], nil];
  27. }
  28. return foundationClasses_;
  29. }
  30. + (BOOL)isClassFromFoundation:(Class)c
  31. {
  32. if (c == [NSObject class] || c == [NSManagedObject class]) return YES;
  33. __block BOOL result = NO;
  34. [[self foundationClasses] enumerateObjectsUsingBlock:^(Class foundationClass, BOOL *stop) {
  35. if ([c isSubclassOfClass:foundationClass]) {
  36. result = YES;
  37. *stop = YES;
  38. }
  39. }];
  40. return result;
  41. }
  42. @end