iOS开发block篇---block传值

   

//int a 就是参数列, return a*a; 就是行为主体,后面的小括号里面的5会被当成a的输入值
int result = ^(int a){return a*a;}(5);
NSLog(@"---result...%d",result);
    
//声明一个iBlock的Block指针,其所指向的Block有一个int类型得返回值和int类型得参数
int(^iBlock)(int);
//将Block实体指定给iBlock
iBlock = ^(int a){ return a+2;};
//调用
int bb = iBlock(10);
NSLog(@"----bb....%d",bb);
    
//cBlock在其主体中用到的outA这个常量值的时候做了一个copy的动作,把c的值copy下来
//所以,之后c即使换成了新的值,对于cBlock里面copy的值是没有影响的
//如果是static类型的常量就可以直接在block里面修改c的值
static int c = 5;
int (^cBlock)(int) = ^(int ccc){c = 8;return ccc*c;};
NSLog(@"---c...%d",cBlock(2));
    
//如果是指针类型,可以直接在block里面修改
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"one",@"two",@"three", nil];
//直接赋值a为2
int aarrr = ^(int a){[arr removeLastObject];  return a*a;}(2);
NSLog(@"--aarrr...%d---arr...%@",aarrr,arr);
    
//在某个变量前面如果加上修饰字“__block"(注意是两个下划线)的话
//也可以直接在block里面修改此变量的值
__block int v = 0;
//调用vBlock赋值a为2
int (^vBlock)(int) = ^(int a){ v = 3; return a*v;};
NSLog(@"---abc...%d",vBlock(2));
//下面记录一下block得传值,a页面push到BTPushViewController页面
//BTPushViewController页面pop回a页面得时候将值传给a页面
//在BTPushViewController页面.h中声明一个块
typedef void (^myBlock)(int);
//定义当前块的属性和方法
@property (nonatomic,assign)myBlock senBlock;
-(void)returnBlock:(myBlock)senderBlocks;
//BTPushViewController页面得.m中
-(void)returnBlock:(myBlock)senderBlocks
{
    self.senBlock = senderBlocks;
}
//返回按钮
- (void)navLeftBtnAction:(UIButton *)btn
{
    //用block进行传值
    if (self.senBlock) {
        self.senBlock(15);
    }
    [self.navigationController popViewControllerAnimated:YES];
}
//在a页面push到BTPushViewController页面得跳转方法里面这样写
-(void)doButton
{
    BTPushViewController *pushs = [[BTPushViewController alloc] init];
    pushs.senBlock = ^(int a)
    {
        NSLog(@"--------block传值%d",a);
    };
    
    [self.navigationController pushViewController:pushs animated:YES];
}


上一篇: 没有了