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操作

上一篇下一篇

猜你喜欢

热点阅读