Block是一個很是有特點的語法,它能夠把一個代碼塊做爲一個變量來保存,也能夠經過函數傳遞變量,而後讓其餘的對象來執行這一代碼塊。能夠保存傳遞並在其餘地方執行的代碼塊,這是我對Block的理解,也是我以爲Block最吸引個人地方。ios
/**直接定義——返回Block指針 * ^返回類型<可省略>(參數類型 參數)<沒有參數可省略>{ * 代碼塊; * }; */ ^int(int a){ return a; };
/**使用Block——返回Block返回值 * Block(參數) */ ^int(int a){ return a; }(5);
/**聲明定義Block變量 * 返回類型 (^變量名)(參數類型); */ int (^example)(int); example = ^(int a){ return a; };
/**類型聲明定義Block變量 * typedef 返回類型 (^Block名)(參數類型); */ typedef int (^Example)(int); Example eg = ^(int a){ return a; }; eg(5);
__block
__weak
__block
或者__weak
修飾的變量操做纔有意義@property (nonamatic, copy) ABlock eg;