黑馬程序員----Objective-C學習筆記之單個對象內存管理

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

發佈了65 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章