【OC语言】第七篇·ARC和分类
来源:互联网 发布:恒生指数期货模拟软件 编辑:程序博客网 时间:2024/06/06 05:38
1.使用注意
1)并不是所有放到释放池中的代码,产生的对象就会自动释放。如果需要释放,必须加入到自动释放池。 Person *p = [[Person new] autorelease];
2)如果对象调用了autorelease,但是没有在任意一个自动释放池中,此时该对象也不会被加入到自动释放池中。
3)我们只需要在自动释放池代码块中调用autorelease, 就可以把对象加入到自动释放池
2. 自动释放池中不适合放占用内存比较大的对象。
3. instancetype 可以智能帮我们判断赋值赋值的指针变量的类型和方法的返回值类型是否一致
二、ARC
1. 指针分类:
强指针:默认情况下,所有的指针都是强指针,关键字strong
弱指针:_ _weak关键字修饰的指针
2. ARC判断准则:只要没有强指针指向对象,对象就会被释放
3. 特点:
1)判断是否是ARC机制
2) 查看项目信息 不能使用retain release autorelease retainCount, 在dealloc方法中不能使用 [super dealloc];
3)正常创建对象,不用手动释放对象
4. __strong 修饰符,修饰这个指针是一个强指针,也可以不写
__weak 修饰的这个指针是弱指针
5. 在ARC下 @property set方法参数
原子性\读写 和MRC下是一样的
MRC ARC
assign assign
retain strong(强指针)OC其他的对象 weak(弱指针) UI控件
copy copy
6. 多对象的循环引用,在ARC下的解决办法是:在一段使用强指针,一段使用弱指针
7. ARC中,只要弱指针指向的对象不存在了,那么该对象就会被销毁,弱指针指向nil
8. ARC模式下兼容MRC
转换为非ARC -fno-objc-arc 转换为ARC:-f-objc-arc
9. MRC 转换为 ARC
三、分类(Category)
1. 作用:
1)在不修改原有类的基础上增加新的方法
2)一个庞大的类可以分模块开发
3)一个庞大的类可以由多个人来编写,更有利于团队合作
2. 使用分类的步骤
先声明分类 实现分类 使用分类
3. 分类文件的命名:
@interface 待扩展的类名 (分类的名称)
@end
@implementation 待扩展的类 (分类的名称)
@end
4. 注意事项:
1) 在分类的声明中不能声明实例变量, 不能定义实例变量也不能使用 @property
2) 在分类的方法中,可以访问类中的实例变量
3) 在分类中存在和类同名的方法,优先访问的是分类中的方法
4) 当在多个类别中有同名的方法的时候,这时候执行的最后编译的那个类别的同名方法
分类 > 原类 最后编译的分类 > 其他的分类
5. 非正式协议就是类别,即:凡是NSObject或其子类的类别,都是非正式协议。
6. 扩展\延展\延展分类: 延展是一个特殊的分类
特点: 1)可以在延展中 定义实例变量
2) 不能使用 @implementation 类名() 实现类别的方法
3) 可以定义私有的变量和方法
0 0
- 【OC语言】第七篇·ARC和分类
- OC-分类、扩展、ARC
- OC语言类的深入和分类
- OC语言类的深入和分类
- OC语言类的深入和分类
- OC语言类的深入和分类
- OC语言类的深入和分类
- OC语言类的深入和分类
- 黑马程序员——OC语言------内存管理和ARC
- OC加强DAY02 - ARC与分类
- OC语言--分类(category)
- OC语言——构造方法和分类的使用
- OC语言11-类的深入和分类
- oc语言 ARC机制的简单学习
- 黑马程序员——OC语言ARC
- 黑马程序员——OC语言ARC
- OC分类和协议
- 黑马程序员——9、OC语言(内存管理和ARC)
- 【OC语言】第三篇·类方法的使用、匿名类以及封装
- 【OC语言】第四篇·类的继承、多态、类对象以及SEL类型
- 【OC语言】第五篇·@property和@synthesize关键字、动态类型检测和构造方法
- web_custom_request应用示例-飞机订票系统中的删票操作
- 【OC语言】第六篇·内存管理
- 【OC语言】第七篇·ARC和分类
- 【OC语言】第八天·block和Protocol
- 【OC语言】第九篇·NSString,NSArry,NSDictionary
- 【OC语言】第十篇·NSFileManager、NSDate、沙盒、copy以及单例模式
- 【OC笔记】关于MRC中的注意问题
- 【OC笔记】MRC中多对象内存管理以及循环retain
- 【OC笔记】分类和延展
- 如何获取网站Icon
- 【OC笔记】block的用法