- 自動(dòng)引用計(jì)數(shù)器 Auto Reference Count
iOS 開發(fā)目前主流的內(nèi)存管理方式, 就是讓編譯器來進(jìn)行內(nèi)存管理. 在新一代 Apple llvm 編譯器中設(shè)置 ARC 為有效狀態(tài), 就無需再次鍵入 retain 或者是 release 代碼, 這在降低程序崩潰, 內(nèi)存泄露等風(fēng)險(xiǎn)的同時(shí), 很大程度上減少了開發(fā)程序的的工作量. 編譯器完全清楚目標(biāo)對(duì)象, 并能立刻釋放那些不再需要被使用的對(duì)象. 如此一來, 應(yīng)用程序?qū)⒕哂锌深A(yù)測性, 且能流暢運(yùn)行, 速度也將大幅提升.
- 內(nèi)存管理
房間開關(guān)燈理論, 引用計(jì)數(shù)器機(jī)制
生成對(duì)象/持有對(duì)象/釋放對(duì)象/廢棄對(duì)象
- 內(nèi)存管理的思考方式
更加客觀, 正確的思考方式是:
自己生成的對(duì)象, 自己持有.
非自己生成的對(duì)象也能自己持有
不再需要自己持有的對(duì)象時(shí)釋放對(duì)象
非自己持有的對(duì)象無法釋放
對(duì)象操作與 Objective-c 對(duì)應(yīng)的方法
對(duì)象操作 | Objective-C 方法 |
---|---|
生成對(duì)象 | new/alloc/copy/mutableCopy |
持有對(duì)象 | retain |
釋放對(duì)象 | release |
廢棄對(duì)象 | dealloc |
/*
* 自己生成并持有對(duì)象
**/
id obj = [[NSObject alloc] init];
/**
* 自己持有對(duì)象
*/
[obj release]
/**
* 釋放對(duì)象
*/