天天看點

iOS Block文法 基礎介紹1 淺談(void(^MyBlock)()=^) oc block

以前我們知道的資料類型如Double,枚舉,結構體,指針,OC資料類型,id,但是還有種資料類型,叫做Block.接下來我想介紹一下Block

      這種資料類型,Block是蘋果官方推薦讓我們使用的,為什麼了,因為Block的運作效率特别高,特别好用,在iOS的開發中你會發現,到出都是Block,為什麼這麼多,最主要的一個原因就是他好用,運作效率高.

      Block的本質:其實他的本質還是c語言的函數,指向函數什麼的,具體咱們先不談,我先介紹一下Block是幹什麼用的,

      Block的作用:其實很簡單,Block他是用來封裝代碼的,是用來儲存代碼的,隻要使用Block儲存的一段代碼,他在程式運作的

      任何時候都可以調用,任何時候執行,這很像一個函數,我們函數不也是這樣嗎,你是把一段代碼封裝到一個函數裡面去,要在某一個時間,調用這個函數,不就執行這段代碼了,但是函數有一個缺點,函數在編譯之前就已近确定了,但是Block他不一樣,Block是程式運作時候儲存一段代碼,而函數不可以,函數的代碼是固定死的,是以Block不一樣.

      接下來我們寫一個小小的例子1

void test()

{

    NSLog(@"我是王虎");

}

例子2  有時候我們是不是希望在函數運作過程中就把這段代碼儲存起來,而且想把這段代碼傳來傳去,這時候怎麼辦了.不好辦,這時候我們就用Block,在前面我們已經說過,Block用來儲存一段代碼,有時候我們也稱代碼段,代碼塊.是以你想一想,你要儲存一段代碼,肯定要有一個{},而且你應該知道你要儲存什麼代碼,你是不是應該在{}裡面寫上,假如我要輸出我的名字,寫在{}裡面,我現在想把儲存我名字的代碼儲存起來友善我以後随時調用,現在他隻是一個普通的代碼快,怎麼讓他知道我的代碼塊是Block,其實很簡單,加一個Block的标志,指針的标志是*,Block的标志是數字6上面的^, ^其實是位運算符,或,但是在這裡他不是或,他是Block,在{}最前面加一個^,如^{},加上^以後系統會知道這是Block.Block其實和函數很像,那像在什麼地方了 1可 以儲存代碼 2有傳回值 3有形參 我前面已經說過,Block是一種資料類型,現在我們來定義一個Block的變量,現在我們寫一個他傳回值void,注意Block有一個(),寫一個MyBlock,這個是Blok的變量名,接下來在寫一個(),()什麼意思 代表我們沒有形參  完成以後如以下代碼,這麼寫意味着他沒有傳回值,沒有參數

//1  定義Block變量

    void(^MyBlock)()=^{

        NSLog(@"我是王虎");

    };

    //2調用Block内部代碼

    MyBlock();

    //我想在執行一次

    MyBlock();

    //我們可以看到列印結果 調用了兩次

2015-09-17 22:02:14.251 iOS  Block  基本使用[56168:6111112] 我是王虎

2015-09-17 22:02:14.251 iOS  Block  基本使用[56168:6111112] 我是王虎