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 語言中釋放記憶體,就相當於把小球直接銷毀,但可能還有其他人用線牽著這個小球啊,當你釋放之後,...