iOS中ARC內部原理
原文連結:http://blog.csdn.net/meegomeego/article/details/11898495
你已經知道,ARC會自動幫你插入retain
和release
語句。ARC編譯器有兩部分,分別是前端編譯器和優化器。
1. 前端編譯器
前端編譯器會為“擁有的”每一個物件插入相應的release
語句。如果物件的所有權修飾符是__strong
,那麼它就是被擁有的。如果在某個方法內建立了一個物件,前端編譯器會在方法末尾自動插入release
語句以銷燬它。而類擁有的物件(例項變數/屬性)會在dealloc
方法內被釋放。事實上,你並不需要寫dealloc
方法或呼叫父類的dealloc
方法,ARC會自動幫你完成一切。此外,由編譯器生成的程式碼甚至會比你自己寫的release
語句的效能還要好,因為編輯器可以作出一些假設。在ARC中,沒有類可以覆蓋release
方法,也沒有呼叫它的必要。ARC會通過直接使用objc_release
來優化呼叫過程。而對於retain
也是同樣的方法。ARC會呼叫objc_retain
來取代保留訊息。
2. ARC優化器
雖然前端編譯器聽起來很厲害的樣子,但程式碼中有時仍會出現幾個對retain
和release
的重複呼叫。ARC優化器負責移除多餘的retain
和release
語句,確保生成的程式碼執行速度高於手動引用計數的程式碼。
在第28章中你會看到有關ARC內部工作原理的更多內容。
相關文章
- iOS 揭露Block的內部實現原理iOSBloC
- JVM 內部原理(一)— 概述JVM
- oracle事務內部原理Oracle
- iOS ARC工程中加入非ARC檔案iOS
- mysqldump的內部實現原理MySql
- MySQL排序內部原理探祕MySql排序
- Vitual DOM 的內部工作原理
- [zt] Oracle恢復內部原理Oracle
- 瀏覽器內部工作原理瀏覽器
- Spark SQL / Catalyst 內部原理 與 RBOSparkSQL
- MongoDB 儲存引擎與內部原理MongoDB儲存引擎
- 深入解析 oracle drop table內部原理Oracle
- Kubernetes 內部元件工作原理元件
- 解讀Promise內部實現原理Promise
- pinpoint-php-aop 內部原理PHP
- iOS中atomic和nonatomic區別及內部實現iOS
- iOS arc 記憶體管理iOS記憶體
- iOS ARC簡要介紹iOS
- 深入研究Windows內部原理系列(影片)Windows
- Git詳解之九:Git內部原理Git
- java中的內部類Java
- Java中的匿名內部類及內部類的二三事Java
- Java中的巢狀類、內部類、靜態內部類Java巢狀
- 放大器內部結構原理圖解圖解
- 原來 ArrayList 內部原理這麼簡單
- async、await和generator函式內部原理AI函式
- Java HashMap原理及內部儲存結構JavaHashMap
- Flink 核心元件 內部原理 多圖剖析元件
- Vue原始碼: 關於vm.$watch()內部原理Vue原始碼
- 二十九、Elasticsearch的增刪改內部原理Elasticsearch
- STL vector的內部實現原理及基本用法
- js內部事件機制–單執行緒原理JS事件執行緒
- iOS開發– ARC與引用計數iOS
- IOS 設定檔案是否使用ARCiOS
- iOS arc VS mrc學習筆記iOS筆記
- java內部類,區域性內部類,靜態內部類,匿名內部類Java
- iOS開發之APP內部切換語言iOSAPP
- Java中內部類的騷操作Java