您的位置:首页 > 移动开发 > Objective-C

黑马程序员----Objective-C学习笔记之单个对象内存管理

2015-10-06 17:10 513 查看
------Java培训、Android培训、iOS培训、.Net培训--------

1、避免使用僵尸对象的方法

避免使用僵尸对象的方法是,在堆内存释放后,给对象赋值为nil,因为给

nil发送消息是没有任何效果的。

2、单个内存对象的内存泄露问题
1)情况一

@autoreleasepool {
//此时p是个局部变量,程序结束时p被释放,但是该对象在堆区分配的内存没有被释放,称为【内存泄露】
//创建完成后没有释放
Person *p = [Person new];
}


2)情况二

@autoreleasepool {
//没有遵守内存管理原则
Person *p = [Person new];
[p retain];

[p release];
}


正确做法:

@autoreleasepool {
//正确做法
Person *p = [Person new];
[p retain];
[p release];
[p release];
}


情况三:

@autoreleasepool {
//不当的使用nil
Person *p = [Person new];
p = nil;
[p eat];
[p release];
}


正确做法:

@autoreleasepool {
//不当的使用nil
Person *p = [Person new];

[p eat];
[p release];
p = nil;
}


情况四:

在函数中对传入的对象进行了retain,其实也是不遵守内存管理原则
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: