block的四种形式
//1.无参数,无返回值
void(^block)() = ^(){
//函数大括号里的代码段
NSLog(@"房子真贵!");
};
//block的使用
block();
//block自己不会执行,必须调用才会执行block大括号里的代码段
//2.有参数,无返回值
void(^block)( int , int ) = ^(int a ,int b){
int max = a > b ? a : b ;
NSLog(@"%@",max);
};
//调用
block(10 ,20 );
//void (^)(int ,int )是block的类型,他的名是block,我们也通过名进行调用
void(^block)(NSString *) = ^(NSString *str){
NSLog(@"%@",str);
};
block(@"你好,今天");
//当参数是一个数组,对数组进行遍历
void(^block)(NSArray *) = ^(NSArray *arr){
for (NSString *str in arr){
NSLog(@"%@",str);
}
};
block(@[@"1",@"2",@"3"]);
//3.有返回值,无参数
//有返回值在函数段的最后要加上return
int (^block)() = ^(){
return 100;
};
//block调用的时候没有参数也要写上括号
NSLog(@"%d",block());
//4,有参数,有返回值
NSString *(^block)(NSArray *,NSInteger) = ^(NSArray *arr,NSInteger index){
return arr[index];
};
NSLog(@"%@",block(@[@"1",@"2",@"3",],2));
NSInteger ^(block)(NSString *) = ^(NSString * str){
return str.integerValue;
};
NSLog(@"%ld",block(@"1234p123"));//只能打出1234
//参数日期的字符串,返回NSDate类型的日期对象
NSDate *(^block)(NSString *) = ^(NSString *date){
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
return [formatter dateFromString:date];
};
NSLog(@"%@",block(@"2015-07-28 12:12:12"));
//block的函数段中更多使用参数,而返回值更多是调用一方使用