OC 記憶體管理初級

2021-06-23 05:35:34 字數 815 閱讀 6187

**法則:如果對乙個物件進行了alloc retain copy之後,就擁有了該物件的所有權,就必須對它進行release或者autorelease

alloc 引用計數0 ->1

retain 引用計數 立即 +1

copy

release 引用計數 立即-1

autorelease 配合 @autoreleasepool使用

retaincount 用來取當前物件的引用計數

是oc中對引用計數操作的方法

autorelease會將宣告autorelease的物件放入離它最近的自動釋放池中,當自動釋放池銷毀時,會向池中的每乙個物件傳送乙個release訊息.

@autoreleasepool }}

內部@autoreleasepool避免了記憶體的堆積問題.

@autoreleasepool

//記憶體洩漏

//常量區的記憶體由系統管理

在記憶體的管理過程中會出現 1.過度釋放2.野指標問題3.記憶體洩露問題

1.//過度釋放

//現象:當寫完和記憶體引用計數-1有關的操作後,程式立即crash.

//原因:空間唄系統**之後,不能再做和引用計數-1有關的操作,否則會立即crash

//解決方案:刪除.

2.//野指標異常

//現象:可能會崩潰 也可能不會崩潰 ,寫到某一行**是突然崩潰(沒有寫任何和引用計數相關的**)

//產生原因:該物件的空間已經被系統**,不能再訪問沒有訪問權的物件

//解決方案:空間被系統**之後禁止訪問

OC記憶體管理初級演練

alloc 開闢記憶體空間,並且將物件的引用計數由0變1.person per1 person alloc init 0 1 retaincount 用來獲取當前物件的引用計數 nslog lu per1 retaincount retain 將物件的引用計數加一 person per2 per1 ...

oc的記憶體管理初級

建立乙個person類在.h,宣告屬性 凡是語義設定使用了retain copy的屬性,其對應的例項變數都需要在dealloc方法裡面release一次 property nonatomic copy nsstring hobby property nonatomic retain nsstring...

OC記憶體管理的初級理解

自己每開闢一次空間,自己要對其 自己開闢的 進行釋放 對引用計數 1,相應的也要對引用計數 1 不必管系統對空間的操作,系統會對其進行處理.1.能讓引用計數改變的五個方法 1 alloc開闢記憶體空間,將物件的引用計數 1 2 retain將物件的引用計數 1 3 copy 4 release將物件...