黑馬程序員--內存管理和自動引用計數

內存管理關心的是什麼?

清理內存以便內存能夠再次利用


Objective-C的基本內存管理模型分爲三種:

  • 自動垃圾收集
  • 自動引用計數(ARC)
  • 手動引用計數和自動釋放池

1. 自動垃圾收集

特點:釋放時間不確定性和釋放順序不確定性

2.手動管理內存

自動釋放池:當到釋放池結束時,對添加到釋放池中的對象發送release消息,當對象引用計數爲0時,系統調用derelease來釋放內存。

關於

手動內存管理總結(共6點)

  • 如果需要保持一個對象不被銷燬,可以使用retain,在使用完對象後需要使用release進行釋放;
  • 使用release進行釋放對象時,對象並不一定立刻被銷燬,只有引用計數變爲0時才有系統調用dealloc進行釋放;

  • 自動釋放池結束時會向對發送autorelease的所有的對象發送release消息,如果池中某個對象引用計數變爲0,則系統調用dealloc銷燬該對象。
  • 自動釋放池結束時對池中對象發送release消息也不一定能夠銷燬所有的對象,因爲某個對象引用計數可能還不爲0;
  • 當程序終止時所有的對象都被銷燬;
  • 對使用alloc  retain  copy方法的任何對象,以及具有retain和copy的屬性的對象釋放時,需要dealloc方法使得在對象釋放的時候能夠釋放實例變量


3.自動引用計數
強變量:所有對象指針變量都是強變量;
若變量:處理兩者關係時使用,當一個若變量聲明時,系統會追蹤這個變量的餓引用,當引用對象釋放時,若變量會被自動設置成nil,避免無意間給該變量發送消息引起系統崩潰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章