OC中内存管理的介绍

来源:本站
导读:目前正在解读《OC中内存管理的介绍》的相关信息,《OC中内存管理的介绍》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《OC中内存管理的介绍》的详细说明。
简介:OC 与 Java内存管理的区别

OC 与 Java内存管理的区别

Java的内存对象 系统会自动检测, 当没有指针用这个对象时, 对象会被系统自动回收,OC 在ARC管理之前, 是需要手动回收内存的。

OC中方法的使用

1> retain: 计数器+1, 会返回对象本身

2>release: 计数器-1, 没有返回值

3>retainCount: 获取当前的计数器

4>dealloc:

当一个对象被回收的时候, 一定要调用[super dealloc] , 这句话要放最后面, 因为super的回收要放最后面。

几个概念:

1.僵尸对象: 所占用内存已经被回收的对象, 是不可用对象

2.野指针: 指向僵尸对象, 也就是不可用内存的指针, 给野指针发送消息会报错(EXC_BAD_ACCESS)

3.空指针: 没有指向任何东西的指针,给空指针发送消息一般不会报错

几个结论:

如果你用alloc new [mutable] copy创建一个对象, 那么你必须调用release 或 autorelease来释放对象, 换句话说, 这个对象不是你创建的, 你不需要release

内存管理代码规范:

1>只要调用alloc, 必须有release

2>set方法的代码规范

-age = age;

例如:OC对象类型操作(在手动release & retain内存时)

- (void)setBook: (Book*) book {

//1>判断传进来的是新书 还是 旧书

if (book != _book) {

//2>对旧对象进行一次release操作

[_book release];

//3>对新对象做一次retain

-book = [book retain];

}

}

dealloc方法的代码规范:

1>一定[super dealloc] 一定要放到最后面

2>对self(当前)所拥有的其他对象进行一次release

例如:

- (void)dealloc

{

[_book release];

[super dealloc];

}

提醒:《OC中内存管理的介绍》最后刷新时间 2024-03-14 01:01:36,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《OC中内存管理的介绍》该内容的真实性请自行鉴别。