标签:
- (void)viewDidLoad {
[super viewDidLoad];
[self wucan];
[self youcan];
[self san];
[self si];
[self five];
[self six];
}
#pragma mark -无参无返回值
-(void)wucan
{
//不带参的block
void(^nslBolck)()=^{
NSLog(@"我不是带参的block");
};
nslBolck();
//输出我不是带参的block
}
#pragma mark -有参无返回值
-(void)youcan
{
void(^canshu)(NSString *)=^(NSString *str)
{
NSLog(@"我的参数在哪里:%@",str);
};
canshu(@"参数在这里");
// 输出我的参数在哪里:参数在这里
NSString *string=@"参数在这里";
canshu(string);
// 输出我的参数在哪里:参数在这里
}
#pragma mark -有参有返回值
-(void)san
{
NSString *(^block1)(NSString *)=^(NSString *str){
return [str stringByAppendingString:@"抓老鼠"];
};
NSLog(@"%@",block1(@"猫"));
//输出猫抓老鼠
NSString *str=@"猫猫";
NSString*(^block2)(NSInteger)=^(NSInteger interger){
NSString *mao=[NSString stringWithFormat:@"%@抓老鼠,抓了%li只",str,interger];
return mao;
};
NSLog(@"%@",block2(2));
//输出猫猫抓老鼠,抓了2只
}
#pragma mark -block做参数
-(void)si{
[self block3:^{
NSLog(@"这是返回的block");
//后输出这是返回的block
}];
}
-(void)block3:(void(^)(void))block{
NSLog(@"本身要输出的");
return block();
// 先输出本身要输出的
}
-(void)five
{
int result=[self myFunction:^int(int num1, int num2) {
return num1+num2;
} withNumber:5];
NSLog(@"%d",result);
//输出10
}
#pragma mark -block复制变量(block内不能改变变量的值)
-(void)block4
{
int number=10;
int(^myptr)(int)=^(int a)
{
return number+a;
};
number=5;
int result=myptr(20);
NSLog(@"result %d",result);
// 输出30
//如能改变 需定义 static 或_block
}
-(void)six
{
NSMutableArray *mutableArray=[NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
void(^removeObject)(void)=^(void)
{
[mutableArray removeLastObject];
};
removeObject();
NSLog(@"mutableArray: %@",mutableArray);
//输出
//mutableArray: (
// 1,
// 2,
// 3
// )
}
标签:
原文地址:http://www.cnblogs.com/twhbk/p/block.html