IOS---Block(截獲自動變量值)

先上代碼:

int main()
{
    int dmy = 256;
    int val = 10;
    const char *fmt = "val = %d\n";
    void (^blk)(void) = ^{print(fmt, val)};
    val = 2;
    fmt = "These values were changed. val = %d\n";
    blk();

    return 0;
}

該代碼中,Block語法的表達式使用的是它之前聲明的自動變量fmt和val。Blocks中,Block表達式截獲所使用的自動變量的值,即保存該自動變量的值,所以在執行Block語法後,即使改寫Block中使用的自動變量的值也不會影響Blcok執行時自動變量的值。

發佈了47 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章