IOS Block 知識梳理

2021-10-06 16:44:49 字數 775 閱讀 4518

1 block 的定義

block 就是以函式以及執行上下文封裝起來的物件

2  block 截獲物件

001 區域性變數(基礎資料型別)直接獲取其值;物件的成員變數連同其所有修飾符一起截獲

002 靜態區域性變數 獲取的是它的指標形式

003 全域性變數 不進行截獲

3.--block 修飾符

001 一般情況下被截獲的變數進行賦值操作才會生效

002 被--block修飾的基礎資料會轉變成乙個棧block物件,該物件中有個--forwarding指標指向物件自己

003 --forwarding指標 不論在任何位置都位置都可以順利訪問同乙個--block變數

004 不需要被--block修飾的變數型別有靜態變數,全域性變數

4.block 記憶體管理(copy操作)

001 棧block  --copy-->堆block ,棧block中的--forwarding指標指向堆block中的block

002 堆block --copy--> 引用計數加1

003 全域性block  --copy-->  沒有發生變化

5.block迴圈引用(mrc不會,arc會產生迴圈引用)

001 如果說當前block對當前物件某處成員變數進行截獲的話。當前block會對該變數進行強引用,而當前block被當前物件強引用這樣就導致了自迴圈引用

002 迴圈引用環物件--blok——--block---物件 只有打破該迴圈引用環。但是這樣會有乙個弊端就是如果該block都不執行的話那麼記憶體洩漏還會存在

知識梳理計畫

知識的學習一般來說有兩個過程,第乙個是摳細節,理解知識,另乙個是將知識點進行總結歸納融入到自己的知識體系中。如果工作學習過程中需要用到該知識點的時候可以很快的提取出來。在這幾年的學習以及研究生活中,我也陸陸續續的鑽研過一些演算法,但是很多東西,都是當時懂了,但是過了一段時間,可能就忘記了,等到需要使...

Hive 知識梳理

1 order by,sort by,distribute by,cluster by 背景表結構 在講解中我們需要貫串乙個 例子,所以需要設計乙個情景,對應 還要有乙個表結構和填充資料。如下 有 3 個字段,分別為 personid 標識某乙個人,company 標識一家公司名稱,money 標識...

music 知識梳理

專案架構 vue init webpack vue music專案目錄介紹及其圖示字型,公共樣式等資源準備 src api common fonts image js stylus components router store main.js 修改package.json檔案 stylus 0.5...