Object-C的内存管理和.NET有些不一样,.NET的内存回收机制是使用GC自动处理回收,而Object-C本质上还是C语言,所以很多时候还是需要手动去管理内存回收。

  1. Object-C生成一个对象

    Engine *en=[[Engine alloc] init];

    [en dealloc];

    Object-C对象生成分配空间在堆上,需要使用指针来指向其引用。前面也说到了,Object-C中得对象其实就是C中的指针。

  2. 对象初始化以及销毁方法

    +(id) alloc; 注意这里的alloc是一个类方法,调用alloc方法之后会在内存中分配一块空间,并且引用计数会设置为1

    +(id) init; 调用init方法表示初始化对象

    -(void) dealloc; 这里注意一下dealloc不是一个类方法,而是一个实例方法。dealloc 方法用于销毁对象,当引用计数为0的时候系统会自动调用dealloc方法销毁对象

    -(void) release; 调用这个方法用于释放对象的引用,引用计数会-1

    -(void) retain ;调用这个方法用于将引用计数+1

    - (NSUInteger)retainCount; 用于获取一个对象当前被多少对象拥有

  3. 叫苦不迭的内存泄露

    实例一: 

Engine *en=[[Engine alloc] init];
Engine *en2=en;
[en print];
[en dealloc];
[en2 print];
[en2 dealloc];
实例一 代码

相关文章: