您的位置:首页 > 移动开发 > IOS开发

iOS -1-内存管理

2015-12-09 21:02 537 查看
内存管理

iOS5新增了 arc(automatic reference counting) 模式,管理的是NSObject对象,不包括 int,float,char  等基本数据类型

在 mac 模式中:

局部变量存在栈中,自动销毁

对象存在于堆中,需手动销毁

retain,release,retainCount  (ps. release 是减一,并不是销毁变量,销毁变量的关键是对象的引用计数为0)

一个变量: name, 四种应用方式

1>   _name  直接访问成员变量

2>  self->name 直接访问成员变量

3>  self.name 访问 get 方法,间接访问

4>  [self name] 访问 get 方法,间接访问

内存管理中( 对象调用对象)代码规范:

1. 对象有 alloc, 必须有 release

2. set 方法中: 基本数据类型:直接赋值  _name=name;

OC 对象类型:判断, release,retain 

if(car!=_car){

[_car release];

car=[_car retain];

}

3.delloc方法:

释放调用的 OC 对象:[_car release];

     调用[super delloc];

@property() 中的参数类型

1)set 方法中的内存管理

retain:release 旧值, retain 新值(OC 对象)

assign:直接赋值(默认,非 OC类型)

copy:release 旧值,copy 新值

2)是否生成 set 方法:

readwrite:同时生成 setter 和getter 声明,实现(默认)

readonly:只生成 getter 声明,实现

3)多线程管理

atomic: 默认

nonatomic:性能高

4)setter 和 getter 方法名称

在@ property 参数中,修改对象/变量的 set,get方法名称:@ property(getter=xxx, setter=setXxx:) int abc;

一般用在 bool 类型中  (getter=isXxx),改

循环应用:

@class 声明一个类,告诉编译器,这是一个类名

在.h文件中用@ class 声明

在. m 文件中用#import, 调用类的方法,属性

两个对象互相引用:一个用 retain, 一个用 assign

autorelease:

返回对象本身

把对象放到一个自动释放池

当自动释放池被销毁时,池中所有对象都 release 一次

arc:

不允许写 retain,release ,retainCount

可以重写 delloc, 但不允许调用[super delloc]

在@ property 中, retain 改为 strong,

使用 arc, 好处:

不用关心对象什么时候 release,

代码量少了很多,不用手动写 release
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: