码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 内存管理(一)之基础知识介绍

时间:2016-04-11 20:35:57      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

1,什么是引用计数

所有OC对象都有一个计数器,叫做引用计数,引用计数就是目前有几个对象在使用该对象(持有该对象的引用);

2,什么是对象所有权

A对象拥有B对象的引用,A对象拥有B对象的所有权;

3,什么情况下需要retain

A对象的拥有者又增加了一个,那么A对象的拥有计数加1,此时需要使用retain(就是当其他对象需要该对象时,即其他的指针指向了该对象,那么就使该对象的引用计数加1此时需要向该对象发retain消息)

4,什么情况下需要release

A对象的拥有者又减少了一个,那么A对象的拥有计数减1,此时需要使用release(就是当该对象的拥有者不再需要该对象时,那么就可向该对象发送 release消息,使该对象的引用计数减1

5,野指针会有什么问题,如何避免野指针和僵尸对象

野指针就是指 指向一个所占内存已经被销毁的对象的指针;野指针会使程序崩溃,而且不容易检测;

僵尸对象则是指一个所占用的内存已经被销毁的对象; -- 释放掉一个内存后,如果这个指针还需要,要么赋新值,要么给个nil

6,自动释放池是什么

自动释放池是OC的一种内存自动管理机制,当自动释放池销毁时,会将池中的对象逐个调用release方法;

使用autorelease方法将对象放入包含它的自动释放池中;自动释放池实质是当自动释放池销毁后调用对象的release方法,不一定就能销毁对象(例如如果一个对象的引用计数器>1则此时就无法销毁,只是使该对象的引用计数-1)

7,什么是强指针,什么是弱指针

强指针,拥有对象所有权,引用计数+1

弱指针,可以引用对象,不会拥有对象所有权, 引用计数不变

8,assign,strong,weak有什么区别

strong:(ARC环境下对象属性的默认值)强指针,拥有对象所有权,相当于retain,引用计数+1。只要用了ARC机制,OC对象类型都推荐使用strong,不使用retain

weak:(ARC下)弱指针,可以引用对象,相当于assign赋值,不会拥有对象所有权, 引用计数不变。weak适用于OC对象 弱指针会在其指向的实例对象被释放后?自动变成nil   即当弱指针指向的实例对象被释放了,弱指针也不会变成野指针

assign:适用于非指针类型 (适用于基本数据类型)

9,如何解决两个对象之间的循环引用

使用弱引用;将两个对象中的一个设为弱引用

iOS 内存管理(一)之基础知识介绍

标签:

原文地址:http://www.cnblogs.com/snowcoming/p/5379824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!