您的位置:首页 > 其它

ARC的概念和分类的概念

2015-08-09 10:15 302 查看
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 类名

延展可以定义相对私有的方法。不能被子类继承。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: