Block的深入與淺出

談到block,我們通常稱之為代碼塊,那么block的本質到底是什么呢?

block的實質上是對象, 一個函數指針, 指向代碼塊, 以及上下文所需的變量;

函數指針和block的格式對比

函數指針 void(*fun)(int)

block void(^fun)(int)

blcok的書寫形式如下:

//無參無返回值

typedef void (^blockWithoutParameterAndValue)();

//無參有返回值

typedef? NSString* (^blockWithValueButParameter)();

//有參無返回值

typedef void (^blockWithParameterButvalue)(NSString *string, float a);

//有參有返回值

typedef NSString *(^blockWithParameterAndvalue)(NSString *string,float b);

block默認都是在棧上創建的, 當block超過作用域, 就會被銷毀, 如果要在作用域外使用block, 應copy該block到堆上,

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容