NSObject+loadPadClass.m 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. //
  2. // NSObject+loadPadClass.m
  3. // CommonLibrary
  4. //
  5. // Created by Alexi Chen on 2/28/13.
  6. // Copyright (c) 2013 AlexiChen. All rights reserved.
  7. //
  8. #import "NSObject+loadPadClass.h"
  9. #import "FanweDeviceMacro.h"
  10. @implementation NSObject (loadClass)
  11. - (void)configParams:(id)params
  12. {
  13. // do nothing
  14. }
  15. + (Class)getPadClass:(Class)phone
  16. {
  17. if (isIPad())
  18. {
  19. NSString *newClassDesc = [phone description];
  20. NSString *padNewClassDesc = [NSString stringWithFormat:@"%@_Pad", newClassDesc];
  21. Class padNewClass = NSClassFromString(padNewClassDesc);
  22. if (padNewClass)
  23. {
  24. return padNewClass;
  25. }
  26. else
  27. {
  28. return phone;
  29. }
  30. }
  31. else
  32. {
  33. return phone;
  34. }
  35. }
  36. //加载判断Phone的或者pad的文件
  37. + (id)loadClass:(Class)newClass
  38. {
  39. id ret = nil;
  40. if (isIPad())
  41. {
  42. NSString *newClassDesc = [newClass description];
  43. NSString *padNewClassDesc = [NSString stringWithFormat:@"%@_Pad", newClassDesc];
  44. Class padNewClass = NSClassFromString(padNewClassDesc);
  45. if (padNewClass)
  46. {
  47. ret = [[padNewClass alloc] init];
  48. }
  49. else
  50. {
  51. ret = [[newClass alloc] init];
  52. }
  53. }
  54. else
  55. {
  56. ret = [[newClass alloc] init];
  57. }
  58. return CommonReturnAutoReleased(ret);
  59. }
  60. + (id)loadClassFromNib:(Class)newClass
  61. {
  62. id ret = nil;
  63. if (isIPad())
  64. {
  65. NSString *newClassDesc = [newClass description];
  66. NSString *padNewClassDesc = [NSString stringWithFormat:@"%@_Pad", newClassDesc];
  67. Class padNewClass = NSClassFromString(padNewClassDesc);
  68. if (padNewClass)
  69. {
  70. ret = [[padNewClass alloc] initWithNibName:padNewClassDesc bundle:[NSBundle mainBundle]];
  71. }
  72. else
  73. {
  74. ret = [[newClass alloc] initWithNibName:newClassDesc bundle:[NSBundle mainBundle]];
  75. }
  76. }
  77. else
  78. {
  79. ret = [[newClass alloc] initWithNibName:[newClass description] bundle:[NSBundle mainBundle]];
  80. }
  81. return CommonReturnAutoReleased(ret);
  82. }
  83. + (id)loadClass:(Class)newClass withParams:(id)params
  84. {
  85. id instance = [NSObject loadClass:newClass];
  86. #pragma clang diagnostic push
  87. #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
  88. if ([instance respondsToSelector:@selector(configParams:)]) {
  89. [instance performSelector:@selector(configParams:) withObject:params];
  90. }
  91. #pragma clang diagnostic pop
  92. return instance;
  93. }
  94. + (id)loadClass:(Class)newClass withParams:(id)params withConfigSelector:(SEL)selector
  95. {
  96. #pragma clang diagnostic push
  97. #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
  98. id instance = [NSObject loadClass:newClass];
  99. if ([instance respondsToSelector:selector]) {
  100. [instance performSelector:selector withObject:params];
  101. }
  102. return instance;
  103. #pragma clang diagnostic pop
  104. }
  105. @end