开始学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语句有一个初步的了解了