iOS 記憶體管理機制

2021-08-14 10:26:48 字數 756 閱讀 3231

alloc 與 init 理解

myclass  *myobj = [[myclass alloc] init]; =>  myclass *myobj = [myclass alloc]; myobj = [myobj init];

alloc 分配了記憶體給物件,讓他不釋放,並且把位址返回給指標。但是這塊記憶體不能使用,因為沒有被正確的

初始化。init即是對分配的這塊記憶體進行初始化。

[pool release]和[pool drain]的區別

drain 只是用於清除pool中的物件,不會銷毀池,release先呼叫drain方法清理物件,然後再釋放自己的記憶體。

在arc中使用自動釋放池

理資料,那麼我們應該在for迴圈內新增自動釋放池,在每個迴圈後就將記憶體釋放掉,防止記憶體洩露。

nszone

深拷貝和淺拷貝

淺拷貝拷貝的是記憶體位址即指標的拷貝,深拷貝拷貝的是物件的具體內容,從新開闢一塊記憶體儲存,與原物件互不影響。

例:nsstring *name = @"zhou";    nsstring *newname = [name copy];

nslog(@"name:%p",name);   nslog(@"newname:%p",newname);

列印的倆個位址是一樣的。(注意:列印指標的值是一樣的,列印指標的位址是不一樣的。nslog(@"name:%p",&name)這樣列印的結構是不一樣的,因為copy淺拷貝是拷貝的指標,也就是說從新生成了乙個指標,所以倆個指標的位址是不一樣的。)

iOS 記憶體管理機制

學習要點 1.reference counting 引用計數機制 2.了解mrc apc和gc 3.autoreleasepool 執行機制 4.如何避免 retain cycle reference counting 引用計數機制 cocoa 上基本的記憶體管理機制就是引用計數,通過乙個 refe...

iOS記憶體管理機制

todo cf和oc之間的轉換 core foundation框架和cocoa foundation框架區別 core foundation框架和foundation框架緊密相關,它們為相同功能提供介面,但foundation框架提供objective c介面。如果您將foundation物件和co...

談談 iOS 記憶體管理機制

從最簡單的 c 語言開始說起,c 語言中申請 malloc 到了一塊記憶體,你可以把這塊記憶體想象成乙個小球,你有根線牽著它,這根線就是指標,並且規定只有通過線才能拿到小球,乙個小球可以被很多人用線牽著.c 語言中釋放記憶體,就相當於把小球直接銷毀,但可能還有其他人用線牽著這個小球啊,當你釋放之後,...