記憶體管理在oc中是非常重要的,如果乙個專案記憶體沒有管理好,那麼整個專案已經是沒有用了。所以記憶體管理是非常重要的。那麼為什麼要進行記憶體管理呢?由於移動裝置的記憶體極其有限,所以每個
所佔的記憶體也是有限制的,當
所占用的記憶體較多時,系統就會發出記憶體警告,這時需要**一些不需要再繼續使用的記憶體空間,比如**一些不再使用的物件和變數等。那麼oc系統是怎麼管理記憶體的呢,每個
oc物件都有自己的引用計數器,是乙個整數表示物件被引用的次數,即現在有多少東西在使用這個物件。物件剛被建立時,預設計數器值為
1,當計數器的值變為
0時,則物件銷毀。引入了計數器,這樣對於oc中記憶體管理就好多了。
如果為no就要自己去管理記憶體,如果為yes就是系統自己去控制。
下面為自己去管理記憶體的時候。
(一)對於記憶體管理有幾條原則。
只要還有人在使用某個物件,那麼這個物件就不會被**;
只要你想使用這個物件,那麼就應該讓這個物件的引用計數器+1;
當你不想使用這個物件時,應該讓物件的引用計數器-1;
(二)有建立就要銷毀
如果你通過alloc,new,copy
來建立了乙個物件,那麼你就必須呼叫
release
或者autorelease方法
不是你建立的就不用你去負責
(三)只要retain就要有對應的release。
只要你呼叫了retain
,無論這個物件時如何生成的,你都要呼叫
release
(四)總結
有始有終,有加就應該有減。曾經讓某個物件計數器加1
,就應該讓其在最後
-1.
2.*****特殊需要知道
只要呼叫了alloc,就必須有release(autorelease)。
一定要有[super dealloc],而且要放在最後面。
對於autorelease是乙個記憶體自動釋放池。
而一般在以後的專案中都是需要系統自動去調節的。
這是乙個小白根據一些大神所理解的對於記憶體管理的知識。
OC的記憶體管理
程式在執行的過程中通常通過以下行為,來增加程式的的記憶體占用。每個軟體所能占用的記憶體也是有限的當程式所占用的記憶體較多時,系統就會發出記憶體警告,這時就得 一些不需要再使用的記憶體空間。比如 一些不需要使用的物件 變數等如果程式占用記憶體過大,系統可能會強制關閉程式,造成程式崩潰 閃退現象,影響使...
Oc 記憶體管理
1 對你自己擁有的物件負責,你只能釋放你擁有的物件 2 凡是你通過 retain alloc copy等手段獲得了所有者的物件,都必須在你不使用的時候來呼叫release autorelease等手段來釋放對他的所有權 3 在一定的 段內,對同乙個物件所作的copy alloc retain的操作次...
OC記憶體管理
1.記憶體管理原則 如果對乙個物件使用了alloc mutable copy retain,那麼你必須使用相應的release或者autorelease。2.管理範圍 任何繼承了nsobject 的物件,對其他基本資料型別 int char float double struct enum等 無效 ...