代碼塊本質上是和其餘變量相似。不一樣的是,代碼塊存儲的數據是一個函數體。使用代碼塊是,你能夠像調用其餘標準函數同樣,傳入參數數,並獲得返回值。函數
並且在iOS4以後,不少API都加入了Block做爲參數適用,好比NSURLSessionDataTask中的complationHandler參數就是一個帶有傳入參數的block參數。作用域
block和通常的函數寫法上區別不大,跟像是C/C++的函數寫法,但惟一須要注意的是,在代碼塊外聲明的變量,在block內是沒法改變的,若想改變,必須加上 __block 修飾。io
有關block的做用域,當遇到相似的問題以後再更新。變量