標籤:block
-
<span style="font-size:24px;">為什麼要使用block變數呢?
-
因為當我們的程式比較繁雜的時候,我們在一個函數中要調用一個函數,還需要在外邊來定義,實現,很不方便,但是有了block變數我們就可以在一個函數的內部來定義一個block變數,相當於又在函數的內部來定義了一個函數.
-
int (^max)(int x,int y) = ^(int x,int y)//求兩個數的最大值
-
{
-
return x > y ? x :y;
-
};
-
NSLog(@"%d",max(5,10));
-
int (^min)(int x,int y) =^(int x,int y)//求兩個數的最小值
-
{
-
return x > y ? y : x;
-
-
};
-
NSLog(@"%d",min(5,10));</span>
[cpp] view plaincopy650) this.width=650;" src="https://code.csdn.net/assets/CODE_ico.png" width="12" height="12" alt="在CODE上查看代碼片" style="border:none;" />650) this.width=650;" src="https://code.csdn.net/assets/ico_fork.svg" width="12" height="12" alt="派生到My Code片" style="border:none;" />
-
<pre name="code" class="cpp"><span style="font-size:24px;">其中block變數的類型為:int(^)(int x ,int y);
-
max 為變數名,一般看函數是什麼類型,只需要把函數名去掉然後剩下的就是函數的類型.
-
^(int x ,int y)
-
{
-
return x + y;
-
}
-
上面的對block變數進行初始化.</span>
[cpp] view plaincopy650) this.width=650;" src="https://code.csdn.net/assets/CODE_ico.png" width="12" height="12" alt="在CODE上查看代碼片" style="border:none;" />650) this.width=650;" src="https://code.csdn.net/assets/ico_fork.svg" width="12" height="12" alt="派生到My Code片" style="border:none;" />
-
<span style="font-size:24px;">當在block內部使用block外部定義的局部變數時,如果變數沒有被__block修飾,則在block內部是唯讀,不能對它修改,如果想修改,變數前必須要有__block修飾
-
__block的作用是告訴編譯器,在編譯時間在block內部不要把外部變數當做常量來使用,還是當做變數來使用.