黑马程序员 - OC语言 - 【考点】分类(Category)使用注意事项
2015-12-18 12:12
253 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、分类的使用注意事项
1)分类只能增加方法,不能增加成员变量、@property(可能编译不报错,但是运行有问题)
@interfacePerson (study)
@propertyint age; -(void)study;
-(void)work;
@end
#import<Foundation/Foundation.h>#import"Person.h"
#import"Person+study.h"
intmain(int
argc,const char* argv[]) {
@autoreleasepool
{
Person*p = [Person
new]; [p eat];
[p
run];
p.age=
10;
}
return0; }
编译不报错,运行报错
2)分类可以访问原来类中的成员变量
3)如果分类和原来类出现同名的方法,优先调用分类中的方法, 原来类中的方法会被忽略
2、分类的编译顺序
最下面的是最后编译,当多个分类中有同名方法,则执行最后编译的文件方法
总结:
1,如果分类中有和类本身同名的方法,优先会调用分类中的同名方法;
2,如果多个分类中有同名的方法,执行哪个分类的方法,取决于编译的顺序,最后编译的那个分类中的方法会执行。
1、分类的使用注意事项
1)分类只能增加方法,不能增加成员变量、@property(可能编译不报错,但是运行有问题)
@interfacePerson (study)
@propertyint age; -(void)study;
-(void)work;
@end
#import<Foundation/Foundation.h>#import"Person.h"
#import"Person+study.h"
intmain(int
argc,const char* argv[]) {
@autoreleasepool
{
Person*p = [Person
new]; [p eat];
[p
run];
p.age=
10;
}
return0; }
编译不报错,运行报错
2)分类可以访问原来类中的成员变量
3)如果分类和原来类出现同名的方法,优先调用分类中的方法, 原来类中的方法会被忽略
2、分类的编译顺序
最下面的是最后编译,当多个分类中有同名方法,则执行最后编译的文件方法
总结:
1,如果分类中有和类本身同名的方法,优先会调用分类中的同名方法;
2,如果多个分类中有同名的方法,执行哪个分类的方法,取决于编译的顺序,最后编译的那个分类中的方法会执行。
相关文章推荐
- 黑马程序员 - OC语言 - 构造方法的概念
- 【C语言】 简易通讯录
- 黑马程序员 - OC语言 - 响应方法
- 神经进化学的简介和一个简单的CPPN(Compositional Pattern Producing Networks)DEMO
- C++中七大排序算法
- 黑马程序员 - OC语言 - 【考点】ARC使用特点及注意事项
- 黑马程序员 - OC语言 - ARC下循环引用问题
- C++下如何避免方法的方式并且安全的访问类的成员变量
- 黑马程序员 - OC语言 - 单个对象内存管理(野指针)
- 黑马程序员 - C语言 -手动管理内存快速入门
- C语言中的柔性数组
- vc++多线程案例
- 在C++中侦测内嵌型别的存在(rev#2)
- cRuntime函数之(strtol/wcstol)
- 黑马程序员 - OC语言 - NSMutableArray及基本使用
- 黑马程序员 - OC语言 - NSString的其他用法 (获取、转换、去掉)
- 黑马程序员 - OC语言 - NSRange使用(范围)
- effective c++学习笔记
- 开始学习C和C++
- 黑马程序员 - OC语言 - NSString前后缀检查及搜索