第十講.內存管理高級(屬性內部實現原理,遍歷構造器的內存管理,dealloc銷燬內存的方法,多態)

 

1、屬性的內部實現原理
    1.assign屬性的語義特性及使用範圍
 
Person.h 文件
 
 
 
assign的內部實現(會出面試題)
 
 
 
//在內存被系統回收以後,還在使用,容易產生野指針問題(例子以下)。
//assign適合基本數據類型,基本數據類型不會引發內存問題。
 
 
 
 
     2.retain屬性的使用
 
retain屬性的實現細節
 
在調用過程當中想清楚過程
 
注意:(實現的過程)
 
 
   3.copy屬性的使用
copy適用於接受了NSCopying協議的對象,由於只有接受了NSCopying協議,對象才能執行copy操做
 
copy的實現細節(注意裏面對於內存的管理)
 
 
用內存管理的方式解析copy
 
 
注意:思路詳解
 
 
2、dealloc內釋放實例變量
    1. 什麼是dealloc?
      dealloc是NSObject的一個實例方法,與alloc對應用於回收開闢的內存空間
      這個方法在對象引用計數爲0時,由系統自動調用
      一般咱們在dealloc中釋放類的實例變量
    2. 如何使用dealloc?

      // Person.m面試

      - (void)deallocspa

      {3d

          [_name release]; // 釋放setter方法泄露的指針

          [super dealloc];orm

      }對象

    3. dealloc注意事項:
      永遠不要手動調用dealloc
      在dealloc方法的最後一行,必需要寫[super dealloc];
 
 
3、便利構造器方法的實現原理
 
   // 遍歷構造器在使用的過程當中要注意對內存的管理
   //遍歷構造器的格式注意,同時在使用時要與初始化配合使用
 
 
return [p autorelease];是最完美的解決方案,既不會內存泄露,也不會產生野指針
 
 
注意:在遍歷構造器的內部已經用autorelease進行了內存的釋放管理,因此再使用release進行釋放,會引發過分釋放問題
 
 
4、collection的內存管理
      1>.collection:collection就是NSArray,NSDictionary,NSSet...等容器類
                 collection會自主管理本身內部的元素

      2>.加入collection中的對象會被retain繼承

      3>.移除出collection的對象會被release接口

      4>.collection被釋放會對內部全部對象release內存

 

五.多態it

    1>.多態的含義:早上我和同事說口渴,想喝水。結果:A同事拿着個人杯子去給我接了一杯水。B同事順手在飲水機上拿了一次性紙杯給我接了杯水。C同事給了我一瓶他早上剛買的飲料。同事獲得的是一樣地請求,可是三我的都有各自的解決辦法,這就是多態。
多態就是不一樣對象在響應同一個請求時候不一樣的實現。父類指針能夠指向子類對象。

  2>.多態的特色:

       a. 父類指針能夠指向不一樣的子類對象
       b. 容許在多個類中定義同一個消息接口
       c. 能夠屏蔽不一樣的子類之間的差別,能夠通用代碼
       d. 適應需求的不一樣變化

 

實例分析:

定義Animal類,和它的子類,Cat、Dog類:

Animal.h文件

 

 Animal.m文件

 

 cat.h文件(繼承於Animal)

 cat.m文件

 

 

dog.h文件(繼承於Animal)

 

 

dag.m文件

 

 

main.m文件(父類的同一方法,父類和多個子類能夠同時響應,這就是多態)

 

相關文章
相關標籤/搜索