iOS ARC簡要介紹
(1)ARC是什麼?
ARC是iOS 5推出的新功能,全稱叫 ARC(Automatic Reference Counting)。簡單地說,就是程式碼中自動加入了retain/release,原先需要手動新增的用來處理記憶體管理的引用計數的程式碼可以自動地由編譯器完成了。
該機能在 iOS 5/ Mac OS X 10.7 開始匯入,利用 Xcode4.2 可以使用該機能。簡單地理解ARC,就是通過指定的語法,讓編譯器(LLVM 3.0)在編譯程式碼時,自動生成例項的引用計數管理部分程式碼。有一點,ARC並不是GC,它只是一種程式碼靜態分析(Static Analyzer)工具。
我們之前使用Objective-C中記憶體管理規則時,往往採用下面的準則
- 生成物件時,使用autorelease
- 物件代入時,先autorelease後再retain
- 物件在函式中返回時,使用return [[object retain] autorelease];
而使用ARC後,我們可以不需要這樣做了,甚至連最基礎的release都不需要了。
(2)使用ARC的好處?
- 看到上面的例子,大家就知道了,以後寫Objective-C的程式碼變得簡單多了,因為我們不需要擔心煩人的記憶體管理,擔心記憶體洩露了
- 程式碼的總量變少了,看上去清爽了不少,也節省了勞動力
- 程式碼高速化,由於使用編譯器管理引用計數,減少了低效程式碼的可能性
- 記住一堆新的ARC規則 — 關鍵字及特性等需要一定的學習週期
- 一些舊的程式碼,第三方程式碼使用的時候比較麻煩;修改程式碼需要工數,要麼修改編譯開關
(4)ARC基本規則
- retain, release, autorelease, dealloc由編譯器自動插入,不能在程式碼中呼叫
- dealloc雖然可以被過載,但是不能呼叫[super dealloc]
由於ARC並不是GC,並需要一些規則讓編譯器支援程式碼插入,所以必須清楚清楚了這些規則後,才能寫出健壯的程式碼。
(5)總結
今天,我們看到了基本的ARC使用規則
- 程式碼中不能使用retain, release, retain, autorelease
- 不過載dealloc(如果是釋放物件記憶體以外的處理,是可以過載該函式的,但是不能呼叫[super dealloc])
- 不能使用NSAllocateObject, NSDeallocateObject
- 不能在C結構體中使用物件指標
- id與void *間的如果cast時需要用特定的方法(__bridge關鍵字)
- 不能使用NSAutoReleasePool、而需要@autoreleasepool塊
- 不能使用“new”開始的屬性名稱 (如果使用會有下面的編譯錯誤”Property’s synthesized getter follows Cocoa naming convention for returning ‘owned’ objects”)
原文地址:http://www.yifeiyang.net/development-of-the-iphone-simply-1/
github主頁:https://github.com/chenyufeng1991 。歡迎大家訪問!
相關文章
- MQTT簡要介紹MQQT
- Django通道簡要介紹Django
- Bootstrap速學教程之簡要介紹boot
- [譯] 關於 React Motion 的簡要介紹React
- Comodo Positive SSL證書簡要介紹
- 微服務架構的特徵簡要介紹微服務架構特徵
- ARC180 部分簡要題解
- ios簽名證書簡單介紹iOS
- 版本管理工具Git(一)簡要介紹Git
- 關於 sap.ui.base.Object 的簡要介紹UIObject
- iOS開發ARC記憶體管理技術要點iOS記憶體
- iOS Autolayout 介紹iOS
- 目標追蹤(Object Tracking)概念的簡要介紹Object
- 簡要介紹Linux網路服務的種類Linux
- MongoDB資料庫建立的基本規範簡要介紹MongoDB資料庫
- 簡要介紹編譯器工作過程的11步編譯
- Linux核心初始化過程簡要介紹(轉)Linux
- 專案管理工具的特性簡要介紹(轉)專案管理
- BookKeeper 介紹(1)--簡介
- iOS ARC工程中加入非ARC檔案iOS
- AVFoundation (iOS) 簡介iOS
- Nagios簡介iOS
- HTTP介紹和HTML簡介HTTPHTML
- 從docker介紹及其簡介Docker
- 簡單介紹iOS超級簽名系統分發配置iOS
- iOS陸哥開發筆記(七) (AVFoundation簡單介紹)iOS筆記
- Dalvik虛擬機器簡要介紹和學習計劃虛擬機
- Swift iOS:AutoLayout 快速介紹SwiftiOS
- iOS MVC架構介紹iOSMVC架構
- IOS執行緒介紹iOS執行緒
- iOS 8 新特性介紹iOS
- SVG簡單介紹SVG
- HTML簡單介紹HTML
- ActiveMQ簡單介紹MQ
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- SCSS 簡單介紹CSS