iOS -1-内存管理

内存管理

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







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值