内存管理总结

 内存管理   内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配, ,并且在适当的时候释放和回收内存资源。

(一)为什么要进行内存管理。

由于移动设备的内存极其有限 ,需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等。  
管理范围:  任何继承NSObject的对象。
本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指向对象的指针也被回收,此时对象已经没有指针指向,但依然存在于内存中,造成内存泄露。

引用计数器
每个oc对象都有自己的引用计数器,他是一个整数(int)
 ,字面理解是对象被引用次数,可以理解为多少个人在使用

dealloc
当对象被摧毁时,系统自动给对象发送个dealloc消息,因此通过dealloc的调用与否判断对象是否被销毁

(二)引用计数器的作用

判断对象要不要回收的唯一依据就是计数器是否为 0 ,若不为 0 则存在。  
(三)内存管理原则 
1,只要有人使用这个对象,这个对象就不会被回收。
2.   只要你想使用这个对象,那么就应该让这个对象引用计数加1.
3.  当你不想使用这个对象时,应该让这个对象引用计数减一。
谁创建,谁retain   谁release。
 
(单个对象内存管理)
开启僵尸对象检测
为了防止僵尸对象,将对象设置为nil.(避免使用野指针)
但对象内存管理   内存泄漏
1 retain 和release  不匹配问题
2 对象在使用中被赋值nil
3在方法 中不当的使用retain


-(void)setName(对象类型)name
if(_name==name)
     return;
[_name release];
_name = [name retain];


if(_name!=name)
[_name release];
_name = [name retain];

nil ,null  Nil的区别
nil   A null pointer  to an object-c object.(#define nil ((id)0));
NULL A null pointer to anything else.(#define NULL((void *)0));
NULL是一个通用指针,泛型指针。
NSNull A class defines a singleton object used to represent  null values  in collection objects (which don't allow nil values).  

[NSNull null]: The singleton instance of NSNull.

[NSNull null]是一个对象,他用在不能使用nil的场合。

因为在NSArray和NSDictionary中nil中有特殊的含义(表示列表结束),所以不能在集合中放入nil值。如要确实需要存储一个表示“什么都没有”的值,可以使用NSNull类。NSNull只有一个方法:

+ (NSNull *) null;  u
 
@property
原子性 
atomic   
nonatomic
读写属性   控制判断是否生成set方法
readwrite
readonly
set方法处理
assgin
retain
copy 

@class 
做一个简单引入(可以用import替代)
循环引入问题 

与import区别
作用:import会包含引用类的所有信息(内存),包括引用类的变量和方法
@class仅仅是告诉编译器有这么一个类,具体这个类是什么信息,完全不知

 效率   import的文件  一旦最开始的头文件稍有改动  后面引用到这个文件的所有类都需要重新编译一遍,编译效率非常低,相比来说,class就没有这个问题


自动释放池   autorelease 返回对象本身
何时释放
1 手动释放
2 runloop结束后自动释放 (线程)
retainCount==0时释放 


简单的总结  这里比较重要 但是最近比较晕 以后继续总结 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值