首先我們要清楚
1. 「堆」和「棧」
objective-c的物件在記憶體中是以堆的方式分配空間的,並且堆記憶體是由你釋放的,就是release
oc物件存放於堆裡面(堆記憶體要程式設計師手動**)
非oc物件一般放在棧裡面(棧記憶體會被系統自動**)
堆裡面的記憶體是動態分配的,所以也就需要程式設計師手動的去新增記憶體、**記憶體
按管理方式分
按分配方式分
2. 單例模式
單例模式是限制乙個類只能初始化乙個物件的一種設計模式,在實踐中,初始化通常在程式啟動不久後執行,而且這些物件不會銷毀,原理想必大家都很清楚,單例物件被乙個全域性的靜態變數所引用,保證了他不會被釋放,每次呼叫都會先進行判斷是否已經建立,一旦建立將不會再次建立
正是因為單例的不會被釋放,才有可能造成記憶體風險並且會增加程式的啟動時間。下面是列舉開發中的主要使用場景
所以在使用單例時候應該基本遵循一下原則:
3 依賴注入
依賴注入的本質是在需要的時候傳遞依賴,我們可以先看下下面的例子
- (void)somemethod
很明顯的發現 somemethod依賴了外部的類xxsomeclass,
這時候就需要依賴注入了,依賴注入可以通過自定義的初始化器或者呼叫方法注入。**如下:
-(instancetype)initwithsomeclass:(xxsomeclass *) someclass
記憶體管理知識
記憶體管理向來是c c 程式設計的一塊雷區,大家都不怎麼願意去碰她,但是有時不得不碰它。雖然利用c 中的 art pointer已經可以完全避免使用指標,但是對於對於指標的進一步了解,有助於我們編寫出更有效率的 也有助於我們讀懂以前編寫的程式。五大記憶體分割槽 在c 中,記憶體分成5個區,他們分別是...
記憶體管理知識
記憶體管理向來是c c 程式設計的一塊雷區,大家都不怎麼願意去碰她,但是有時不得不碰它。雖然利用c 中的 art pointer已經可以完全避免使用指標,但是對於對於指標的進一步了解,有助於我們編寫出更有效率的 也有助於我們讀懂以前編寫的程式。五大記憶體分割槽 在c 中,記憶體分成5個區,他們分別是...
Mac OS 記憶體管理知識
先請看下面三張,是mac os系統的 活動監視器 的截圖,分別是8g,4g,2g記憶體。使用mac os系統時,關注記憶體的使用情況有時是必要的。常常使用windows系統的朋友,可能覺得mac os系統一啟動好像就一下子把記憶體全用光了,很緊張。其實是對mac os 或linux 系統的記憶體管理...