開始學IOS的時候沒怎麼接觸過block語句,在後來用到的越來越多,就不得不學了,剛開始理解比較困難的,然後自己做了一個例子就慢慢理解了,不說廢話了,上代碼:
正常的簡單地申明調用一個block語句是這樣的:
//申明
int (^yxpBlock)(int, int) =^(int a ) {return a*a ;};
說明:返回值(^語句塊名稱)(傳人參數類型)=^(傳人參數){主體};
//調用
int result = square(5);
我建了一個測試項目包含了(yxpAppDelegate和yxpViewController)兩個類
在yxpViewController類裡面
申明了一個block語句類型
@classyxpViewController;
typedef void (^yxpBlock) (yxpViewController *);
在yxpViewController 申明了yxpBlock變量
@interface yxpViewController :UIViewController
@property (nonatomic,assign)yxpBlock yxpblock;
@end
在touchesBegan: withEvent:調用block語句 (調用block語句要用一根下劃線,@propert默認提供)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
_yxpblock(self);
}
//在yxpAppDelegate中使用了block語句
__blockNSString *str=@"觸摸屏幕";
yxpViewController *viewContro=[[yxpViewControlleralloc] init];
viewContro.yxpblock=^(yxpViewController *viewController){
NSLog(@"---------%@",str);
};
self.window.rootViewController=viewContro;
注意:block語句可以讀取外部變量,但是不能寫入,如果需要在block語句裡修改外部變量,外部變量要用__block (兩根下劃線)標識
將這個例子弄懂相信你就對block語句有一個初步的了解了