------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,其实也是不遵守内存管理原则