1. 内存管理:手动内存管理\\ARC
2017-01-02 本文已影响14人
nonoBoy
1.1 手动内存管理
对象在完成创建的同时,内部会自动创建一个引用计数器,这个计数器,是系统用来判断是否回收对象的唯一依据,当我们的引用计数retainCount = 0的时候,系统会毫不犹豫回收当前对象
[obj release] // retaincount - 1
[obj retain] //retaincount + 1
dealloc函数,当一个对象要被销毁的时候,系统会自动调用dealloc函数,通知对象你将要被销毁
1.2 单个对象的内存管理分析
野指针操作,内存泄漏
void test()
{
Person *p = [[Person alloc] init];
p.age = 10;
NSLog(@"%@", p);
[p release];
[p run]; //EXCESS_BAD_ACESS 访问了不可访问的内存空间
//防止野指针错误: p = nil;
}
内存泄漏的几种情况:
内存的Definition:不再被使用的对象,一直在内存中没有被销毁;
(1)retain count != 0 就会一直存在在内存中
....
@autorelease
{
...
}
对象存入自动释放池,当这个池子被销毁的时候他会对池子中所有的对象进行一次release操作