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 类名

延展可以定义相对私有的方法。不能被子类继承。



0 0
原创粉丝点击