【优点】
1.Category类别
2.Posing
3.动态识别
4.指标计算
5.弹性消息机制
6.不是一个太复杂的C衍生语言
7.OC可以和C、C++、Swift混合编程
【缺点】
1.不支持命名空间
2.不支持运算符重载
3.不支持多重继承
4.使用动态运行时类型,所有的方法都是函数调用,很多编译时的优化方法都用不到,如内联函数。
【详解】
【1】.category类别:
Category依赖于类,它可以在不改变原有类的基础上,为类增加一些方法。在和别人进行合作的时候,就不用担心合并冲突的问题。category的使用需要注意如下:
1)分类只能增加方法,不能增加成员变量;
2)在分类方法中可以访问原来类中的成员变量;
3)分类中可以重写原来方法中的实现,但是会覆盖原来的方法,导致原来的方法不可用;
4)分类调用的优先级:分类>原来的类>父类。若包含多个分类,则最后编译的分类优先。
我通过一个简单的代码来演示一下:
Person.h实现如下:
#import <Foundation/Foundation.h>
@interface Person : NSObject
- (void) show;
@end
P