__weak如何實現物件值自動設定為nil的
詳情請檢視:http://blog.csdn.net/hherima/article/details/38661803
總結如下:
weak的功能:
* 若使用__weak修飾符的變數引用物件被廢棄時,則將nil賦值給該變數
* 使用附有__weak修飾符的變數,就是使用註冊到autoreleasepool的物件
ARC物件釋放的過程:
1. objc_release
2. 因為引用計數為0所以執行dealloc
3. _objc_rootDealloc
4. object_dispose
5. objc_destructInstance
6. objc_clear_deallocating
而,呼叫objc_clear_deallocating的動作如下:
1. 從weak表中獲取廢棄物件的地址為鍵值的記錄。
2. 將包含在記錄中的所有附有__weak修飾符變數的地址,賦值為nil
3. 從weak表中刪除記錄
4. 從引用計數表中刪除廢棄物件的地址作為鍵值的記錄
相關文章
- TypeScript如何實現DDD的值物件?TypeScript物件
- 如何使用angularjs實現文字框設定值AngularJS
- 前端定義一個物件的時候,key值如何設定為數字,並抽成常量前端物件
- 如何從測試自動化中實現價值
- 自動化測試平臺設計與實現(二、自動化測試用例物件設計實現、關鍵字物件設計與實現)物件
- weak實現原理
- iOS main()執行前的過程 + weak 置 nil的過程iOSAI
- C#給自動屬性設定預設值C#
- (轉載)iOS 底層解析weak的實現原理(包含weak物件的初始化,引用,釋放的分析)iOS物件
- weak 弱引用的實現方式
- 為什麼 Go 裡值為 nil 可以呼叫函式?Go函式
- excel如何設定自動換行?Excel
- win10如何設定自動登入 win10設定自動登入的方法Win10
- win10如何設定自動鎖定螢幕_win10設定自動鎖屏的步驟Win10
- ppt自動播放怎麼設定 ppt如何設定自動播放下一頁
- iOS開發 Runtime是如何實現weak屬性的?iOS
- IT 自動化:如何去實現
- 如何設定自動獲取ip地址
- Python如何設定自動補全?Python
- win10 自動登入如何設定_windows10自動登入的設定步驟Win10Windows
- 如何將ASP.NET MVC所有引數均自動設定為預設ASP.NETMVC
- 看我如何用定值 Cookie 實現反爬Cookie
- win10自動鎖定如何設定_win10系統怎麼設定自動鎖屏Win10
- oracle linux實現自啟動及sqlplus環境變數的設定,rlwrap的設定OracleLinuxSQL變數
- 關於零值和nil
- 自動化測試平臺設計與實現(三、自動化用例物件成為可執行檔案,用例執行機的設計與實現、用例除錯)物件除錯
- APP是如何實現自動續費的?APP
- Objective-C 中 NULL、nil、Nil、NSNull 的定義及不同ObjectNull
- win10如何設定自動關機?Win10
- 淺析weak指標的實現指標
- iOS如何實現自動化打包iOS
- 如何實現辦公自動化?
- 自動設定SPOOL檔名為當前日期
- 鈑金件如何實現自動引數化設計
- Oracle實現自增列(序列+觸發器實現、Identity Columns新特性、序列作為預設值)Oracle觸發器IDE
- crontab命令簡介 linux定時設定 Cron實現自動任務 (轉)Linux
- Go 介面:nil介面為什麼不等於nil?Go
- jQuery實現的設定滾動條的位置jQuery