ARC的概念和分类的概念
来源:互联网 发布:京瓷1025mfp 网络设置 编辑:程序博客网 时间:2024/04/30 03:55
1.ARC的概念及原理
指针的分类:强指针和弱指针;
默认情况下指针都是强指针,关键字_ _strong;弱指针关键字 _ _ weak;
ARC是自动内存管理,它是一个编译器的特性,就像点语法。只不过是编译器帮我们添加并且不允许我们自己使用retain,release,autorelease,retainCount,dealloc方法中不能使用[super dealloc]。
ARC的判断准则:
只要没有强指针指向对象,就回收!呵呵,忘记引用计数器吧O(∩_∩)O
单对象的内存管理:
强指针改变指向的时候,弱指针会赋值为nil;
多个对象的内存管理:
注意@property参数weak strong的使用。
ARC循环引用:
一端使用strong 一端使用weak
ARC下set方法的内存管理,@property参数问题:
原子性和读写性 与MRC下相同
set方法中MRC下的retain 在ARC下换成strong 和 weak ,copy都一样。
OC的其他对象 使用strong
UI的控件一般使用weak
ARC的兼容和转换:
-fno-objc-arc 转换为非ARC
-f-objc-arc
在Xcode中更改。这就是兼容啦。╮(╯▽╰)╭
MRC和ARC可以转换,Edit--Refactor---但是不能保证完全正确。哎,就是项目太大啦,类好多啊 ,你也不是很懂。
2.分类(Category)
Category:分类 类别 类目 一般叫分类;是OC的特有语法;
在不修改原有类的基础上,增加新的方法;把一个庞大的类分成模块进行开发;有利于团队协作!\(^o^)/~
目的:对现有的类扩展;作为子类的替代手段;对类中的方法归类;
先声明 然后实现 最后使用
分类的接口只需要带个()表示分类的作用,不需要冒号。
@interface 待扩展的类名 (分类名称)
@end
@implementation 待扩展的类名 (分类名称)
@end
注意:
分类只能增加方法,不能增加成员变量;
可以在分类的方法中访问原来类的成员变量;
优先调用分类的方法,优先调用同名方法中最后编译的方法;
分类的非正式协议:
非正式协议通常定义为NSObject的类别(分类,类目);
也就是说,凡是NSObject或者其子类Foundation框架中类增加的类别,都是非正式协议。
分类的延展:Extension
又称扩展,分类名为空,就是扩展。可以给类增加实例变量,方法,合成的属性;
扩展的方法实现不能在@implementation 类名()中,要在当前的类中@implementation 类名
延展可以定义相对私有的方法。不能被子类继承。
- ARC的概念和分类的概念
- ARC 的概念
- 文件的概念和分类
- 中间件技术的思想、概念和分类
- 中间件技术的思想、概念和分类
- 中间件技术的概念和分类
- 中间件技术的概念和分类
- socket的分类和概念持续更新
- 中间件技术的概念和分类
- Java异常的概念和分类
- 性能测试的概念和分类
- 性能测试的概念和分类
- 中间件技术的思想、概念和分类
- 【多媒体】媒体的概念和分类
- 设计模式的概念和分类
- IO概述 流的概念和分类
- java IO的概念和分类
- 端口的概念及分类
- 学点平面知识丨快速去除水印
- 【Java多线程】之四:Life Cycle of Thread
- Java字符串和输入流的相互转换
- Windows远程桌面技术和SPICE协议概述
- oc基础第三天-类方法、封装
- ARC的概念和分类的概念
- HDU 1754 I Hate It 线段树
- jQuery操作Select
- Gallery实现ViewPager的页面切换效果、以及实现图片画廊效果
- Python学习笔记
- Cocos2d-x 2.0 TestCpp框架源码分析
- 设计模式----代理模式
- MyEclipse 10 部署项目时报错,抛出java.lang.NullPointerException异常的解决方法
- POJ - 3667 Hotel (线段树 + 区间合并)