關於Block的使用

2021-06-22 22:53:46 字數 1249 閱讀 5976

//關於block

的定義 這裡我用typedef 宣告乙個返回值為整型 有乙個引數的block

// typedef void (^block) (nsinteger x);

//下面定義並且實現乙個block

block block = ^(nsinteger x);

//這裡只是給block賦值了 但是沒有呼叫block 但是下面這種形式是給block賦值並且呼叫

block block1 = ^(nsinteger x);

nslog(@"%d",block1(5));

不能直接對區域性基本變數進行操作但是可以用__block宣告 這樣就可以使用 例如下面的第乙個做法是錯的

nsinteger m = 5;

block block2 = ^(nsinteger x);

//下面這種做法是正確的

__block nsinteger m = 5;

block block3 = ^(nsinteger x);

可以對指標和全域性變數進行操作例如用static修飾的變數和 一些陣列,字典等容器

static nsinteger n = 5;

block block4 = ^(nsinteger x);

nsinteger a= 8 ;

nsinteger *p = &a;

block block5 = ^(nsinteger x);

nslog(@"%ld",(long)block5(5));//這裡列印的結果是14

nsmutablearray *array1 = [nsmutablearray arraywithobjects:@"zhangsan",@"lisi",@"wangwu", nil];

//這裡我新定義乙個block

void (^block6)() = ^;//注意這裡如果返回值為空可以省略 引數為空也可以省略

block6();

nslog(@"%@",array1);

//注意這裡只是block的一些基本用法  block高階可以用來傳值  可以用來幫助切換頁面  block 和 delegate的思想和相似  delegate是指定了誰是** 誰就要接受協議 實現delegate中必須要實現的方法  用通俗的話來說就是delegate是我指定你作為我的**  在某個時間點你要為我做一些事   block是我會再某個時間點做什麼事在你這裡實現以下,我將會在我的下篇部落格中展示用block 和delegate的例子

Block的使用 初探Block

看了兩天的block。網上是有非常多解說與教程,也有講得非常好的。這裡就主要解說下我的理解與收穫。歡迎拍磚。所謂block。我覺得應該是乙個閉包函式。而閉包,就是說block以及內部全部的變數生命週期都在其呼叫函式的生命週期內。它一被呼叫完畢,則會被立刻釋放。這裡不講執行機制,僅僅簡要地講基本的用法...

Block語法的使用

block的作用 同 協議 通知一樣用於物件和物件之間的通訊。block的定義 是乙個匿名的函式 塊,此 塊可以作為引數傳遞給其他物件。block的應用場景 物件與物件之間的通訊。block的語法 block的宣告 第一種 int myblock int 第二種 typedef int mybloc...

Block的簡單使用

定義block時,可以對block的輸入引數以及返回值的型別進行定義。可以有輸入引數,也可以沒有輸入引數 可以設定乙個輸入引數,也可以設定多個引數 可以有返回值,也可以沒有返回值。這種形式的block,無需任何輸入引數,並且無返回值,一般都是在該block中完成一些動作,例如在完成一段動畫後,執行一...