iOS 認識之 defer關鍵詞 (梗概)

闡述

一句話概括: defer包裹的代碼會在函數return之前執行。

(無論函數是從哪個分支return, 或 throw, 或自然執行到最後一行)

 

認知

1 使用場景

1-1 do-catch 結構

a defer在do-catch結構中的do代碼塊中,defer會在do代碼塊執行完就執行defer代碼

b defer在do-catch結構中的do代碼塊外,defer會在函數代碼塊執行完執行defer代碼

 

1-2 清理工作,回收資源

a 關閉文件

b dealloc 手動分配的空間需要釋放

c 鎖的解開

 

1-3 completion block

a 函數block的回調

b 函數block的置空

 

1-4 調用super方法

 

2 細節

2-1 任意scope都可以有defer

2-2 必須執行到defer代碼行,defer纔會生效

2-3 多個defer 執行順序,棧結構

 

資料

https://www.jianshu.com/p/a71d87d92459

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章