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,其實也是不遵守內存管理原則