内存管理

Posted lance.xiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存管理相关的知识,希望对你有一定的参考价值。

一、计数器的基本操作

1> retain : +1

2> release :-1

3> retainCount : 获得计数器

 

二、set方法的内存管理

1> set方法的实现

- (void)setCar:(Car *)car

{

    if ( _car != car )

    {

        [_car release];

        _car = [car retain];

    }

}

 

2> dealloc方法的实现(不要直接调用dealloc)

- (void)dealloc

{

    [_car release];

    [super dealloc];

}

 

三、@property参数

1> OC对象类型

@property (nonatomic, retain) 类名 *属性名;

@property (nonatomic, retain) Car *car;

@property (nonatomic, retain) id car;

 

// 被retain过的属性,必须在dealloc方法中release属性

- (void)dealloc

{

    [_car release];

    [super dealloc];

}

 

2> 非OC对象类型(int\float\enum\struct)

@property (nonatomic, assign) 类型名称 属性名;

@property (nonatomic, assign) int age;

 

四、autorelease

1.系统自带的方法中,如果不包含alloc、new、copy,那么这些方法返回的对象都是已经autorelease过的

[NSString stringWithFormat:....];

[NSDate date];

 

2.开发中经常写一些类方法快速创建一个autorelease的对象

* 创建对象的时候不要直接使用类名,用self

 

以上是关于内存管理的主要内容,如果未能解决你的问题,请参考以下文章

ION 内存管理

:内存管理 -- 内存管理的概念

Spark内存管理详解(下)——内存管理

RT-Thread--内存管理

内存管理 浅析 内存管理/内存优化技巧

内存管理相关API列表