[关闭]
@chenbinghua 2015-09-12T10:34:32.000000Z 字数 1070 阅读 1374

Category注意事项

iOS笔记


转载自小码哥笔记

本小节知识点:

  1. 【理解】分类的使用注意事项
  2. 【理解】分类的编译的顺序

1.分类的使用注意事项

  1. @interface Person (NJ)
  2. {
  3. // 错误写法
  4. // int _age;
  5. }
  6. - (void)eat;
  7. @end
  1. @interface Person (NJ)
  2. // 只会生成getter/setter方法的声明, 不会生成实现和私有成员变量
  3. @property (nonatomic, assign) int age;
  4. @end
  1. @interface Person : NSObject
  2. {
  3. int _no;
  4. }
  5. @end
  6. @implementation Person (NJ)
  7. - (void)say
  8. {
  9. NSLog(@"%s", __func__);
  10. // 可以访问原有类中得成员变量
  11. NSLog(@"no = %i", _no);
  12. }
  13. @end
  1. @implementation Person
  2. - (void)sleep
  3. {
  4. NSLog(@"%s", __func__);
  5. }
  6. @end
  7. @implementation Person (NJ)
  8. - (void)sleep
  9. {
  10. NSLog(@"%s", __func__);
  11. }
  12. @end
  13. int main(int argc, const char * argv[]) {
  14. Person *p = [[Person alloc] init];
  15. [p sleep];
  16. return 0;
  17. }
  18. 输出结果:
  19. -[Person(NJ) sleep]

2.分类的编译的顺序

  1. @implementation Person
  2. - (void)sleep
  3. {
  4. NSLog(@"%s", __func__);
  5. }
  6. @end
  7. @implementation Person (NJ)
  8. - (void)sleep
  9. {
  10. NSLog(@"%s", __func__);
  11. }
  12. @end
  13. @implementation Person (MJ)
  14. - (void)sleep
  15. {
  16. NSLog(@"%s", __func__);
  17. }
  18. @end
  19. int main(int argc, const char * argv[]) {
  20. Person *p = [[Person alloc] init];
  21. [p sleep];
  22. return 0;
  23. }
  24. 输出结果:
  25. -[Person(MJ) sleep]


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注