Block儲存域學習

2022-08-23 13:54:13 字數 402 閱讀 9657

時間版本修改

2023年5月9日

初稿2023年5月10日

新增編譯器不能自動將block從棧複製到堆上的情況說明

我試圖從網上找一下《objective-c高階程式設計 ios與os x多執行緒和記憶體管理》2.3.4節的圖,發現竟然一張都沒找著,本來還想貼一下圖的,本人虎軀一震,一切都變得索然無味。

所以我建議還是直接看《objective-c高階程式設計 ios與os x多執行緒和記憶體管理》2.3.4節比較好,高畫質無碼。。。

block為棧block的情況

block為堆block的情況

需要手動將block從棧複製到堆上的情況(編譯器不能進行判斷,又不能無腦使用copy【耗效能】)

在arc環境下,編譯器會根據情況自動將棧上的block複製到堆上(比書上多2種)

block變數儲存域

將block賦值給strong 型別的block變數,或者賦值給strong 修飾的物件型別中的block成員變數時,block會從棧複製到堆上。那 block變數會有什麼變化呢?其實,當block 被從棧複製到堆上時,block中使用到的變數也會從棧賦值到堆上。當block被從棧複製到堆前後,bl...

Block 學習筆記

一 什麼是block?a block is an anonymous inline collectionof code,and sometimes also called a closure 閉包是一種函式,它能夠讀取其它函式的內部變數。block 也相當於內聯函式,執行速度快,簡單方便 二 為什麼...

學習日記 block

block概念 1.內聯函式從源 層看,有函式的結構,而在編譯後,卻不具備函式的性質,編譯時,類似巨集替換,使用函式體替換呼叫處的函式名 2.block封裝了一段 可以在任何時候執行 3.block可以作為函式引數或者函式的返回值,而其本身又可以帶輸入引數或返回值 用途 在多執行緒 非同步任務 集合...