iOS的分类

会生成1个.h 和 1个.m文件

添加的分类也分为声明和实现

代表不是新创建1个类,而是 对已有的类添加1个分类,小括弧中写上这个分类的名字
因为1个类可以添加多个分类 为了区分每1个分类 所以分类要取名字

4) 分类的使用
1) 如果要访问分类中定义的成员,就要把分类的头文件引进来。

5 分类的作用 将1个类分成多个模块。

1) 只能给分类增加方法,不能增加属性。
2) 在分类当中 可以写@property ,但是不会自动生成私有属性,也 不会自动生成getter setter 的实现
只会生成getter setter的声明
所以,你就需要自己写getter 和setter 的声明 也需要 自己定义属性,这个属性就必须定义在本类里

3 在分类的方法实现不可以直接访问本类的真私有属性(定义在本类的@implementent之中)
但是可以调用本类的getter setter 来访问

本类的property生成的私有属性,只可以在本类的实现中访问
分类中不能直接访问私有属性 真
分类可以使用getter 和setter 来访问

4 分类可以存在和本类同名的方法的
当分类中有本类中同名的方法的时候,优先调用分类的方法,哪怕没有引入分类的头文件
如果多个分类中有相同的方法 ,优先调用最后编译的分类

1 本类中的真私有属性在分类中无法直接访问
2

什么时候需要使用分类
当一个类的方法很多很杂的时候,当1个类很臃肿
那么这个时候我么可以使用分类 ,将这个类分为多个模块,将功能相似的方法卸载同1个模块之中
分类的作用在于可以将我们写类的分为多个模块
可以不可以为系统的类写1个分类呢?
为系统自带的类写分类,这个叫做非正式协议

2分类的第2个作用
为1个已经存在的类添加方法
NSString 类都挺好 ,就是差一个方法

统计字符串里面有多少个阿拉伯数字

分类的作用

将臃肿的类分为多个模块
方便管理
2 重写已有的类的其他方法

1 ARC 机制垃圾的回收的机制的区别

GC 程序在运行的期间 有1个东西叫做垃圾回收器 不断的扫描堆中的对象是否无人使用
Person *p1 =[Person new];
p1 = nil;

ARC 不是运行时 ,在编译的时候 就在合适的地方插入retain …
插入的代码足以让对象无人使用的时候,引用计数器为0

@interface 本类名 (分类名)

@end

@interface Student (itcast)

@end

上一篇:深入响应式原理 (二)依赖收集 & 派发更新


下一篇:C#4.0中字典元素的吸气剂