iphone開發中的記憶體分配

2021-08-31 02:37:26 字數 765 閱讀 7350

1、記憶體分配、釋放成對出現

2、注意copy,retain,assign操作符的區別(copy,retain同alloc一樣需要release,assign指的是將物件指向另乙個物件)

3、nsarray,nsdictionary,nsmutablearray,nsmutabledictionary等容器類,在新增物件到這些類物件時,容器類會自動呼叫一次retain,即使物件呼叫release,reference count只是減一,可能不為0,意味物件還有引用,不可釋放

4、連續重複分配記憶體的過程(如while、for迴圈中alloc)最好建立自己的自動釋放池nsautoreleasepool,或alloc和release操作放到迴圈閉包的外面(繁體看著也挺費勁的,換簡體了),這是由於頻繁地向作業系統申請記憶體位址和釋放記憶體的過程非常損耗cpu時間,如果迴圈內部實現的邏輯十分複雜,不能將alloc和release抽離出迴圈體外,那麼就要建立自己的記憶體管理池,其實就是弄個pool物件,把所有的alloc的物件標記為autorelease,在最後把記憶體池release掉,那麼系統會在需要的時候釋放整理所有的autorelease物件,這就是為什麼有時候autorelease物件在作用域範圍外還有可能是有效的

5、避免不常用的物件駐留記憶體,iphone開發跟桌面開發不一樣這你我都知道,所以沒必要在程式初始化的時候將某些資源(比如小)載入進記憶體,這裡情況就非常類似web開發時候用到的懶載入(延遲載入),原因其實是一樣的,iphone是記憶體的限制,web服務是頻寬的限制,當然這也要自己找好乙個平衡點,像第4點提到的頻繁的向os要記憶體也會拖慢效率的

iPhone中管理malloc分配的記憶體空間

我們都知道在c c 語言中,堆記憶體是應該由程式設計師負責釋放的,編譯器並不負責釋放程式設計師自己分配的堆記憶體空間 而在objective c語言中,類例項的釋放是通過release方法進行釋放的,如果是autorelease pool中的例項,程式設計師還不必自己手動釋放相應的記憶體空間,這點對...

iPhone開發記憶體管理

開發iphone 應用程式並不難,基本上就是三個詞 memory,memory,memory iphone os 對記憶體的要求很嚴格,有memory leak 殺掉 記憶體使用超限額,殺掉。乙個經過測試的程式,在使用過程中90 以上的崩潰都是記憶體問題造成的。在這裡簡單總結一下object c 記...

iOS開發中的記憶體分配與分割槽

關於ram rom ram與rom就是具體的儲存空間,統稱為儲存器。ram random access memory 執行記憶體,cpu可以直接訪問,讀寫速度非常快,但是不能掉電儲存。它又分為 rom read only memory 儲存性記憶體,可以掉電儲存,例如sd卡 flash 機械磁碟也可...