zoukankan      html  css  js  c++  java
  • Block传值

    typedef void(^DemoBlock)();
    typedef void(^INTBlock)(int a, int b);
    
    
    @property(nonatomic,assign)DemoBlock demoBlock;
    @property(nonatomic,assign)INTBlock  initBlock;
    
    
    -(void)creatdemoBlock:(DemoBlock)demoBlock InitBlock:(INTBlock)initBlock{
        demoBlock();
        initBlock(10,20);
    }
    
    
        [self creatdemoBlock:^{
    
            NSLog(@"hehehe");
            
        }InitBlock:^(int a, int b) {
            NSLog(@"%d",a+b);//30
        }];
    

      


    int (^Myblock)(int,int) = ^(int a , int b){ return a+b; }; int(^Myblock2)() = ^(){ return 10; }; int (^Myblock3)() =^{ return 20; }; NSLog(@"%d",Myblock(10,20));//30 NSLog(@"%d",Myblock2());//10 NSLog(@"%d",Myblock3());//20
        self.memberVariable = 20;
        //    NSInteger outsideVariable = 20;//如果不添加_block则block会捕获该值
        //添加了_block则会跳过获取后面的值,如果没有则显示此值。
        __block NSInteger outsideVariable = 10;
        NSMutableArray * outsideArray = [[NSMutableArray alloc] init];
        
        void (^blockObject)(void) = ^(void){
            NSInteger insideVariable = 20;//不会变
            NSLog(@"  > member variable = %ld", (long)self.memberVariable);//20
            NSLog(@"  > outside variable = %ld", (long)outsideVariable);//有_block:30?20
            NSLog(@"  > inside variable = %ld", (long)insideVariable);//20
            [outsideArray addObject:@"AddedInsideBlock"];
        };
        
        outsideVariable = 30;
        self.memberVariable = 30;
        
        blockObject();
        
        NSLog(@"  > %lu items in outsideArray", (unsigned long)[outsideArray count]);

    1、在需要回调的B界面:.h

    //1、定义一个Block 返回字符串
    typedef void(^ReturnTextStr)(NSString*str);
    //2、声明一个Block
    @property(nonatomic,strong)ReturnTextStr returnStrBlock;
    //3、声明一个Block方法
    -(void)returenText:(ReturnTextStr)block;
    

     2、在需要回调B界面: .m

    //4、
    -(void)returenText:(ReturnTextStr)block{
        _returnStrBlock = block;
    }
    
    
    //5、
    - (IBAction)back:(id)sender {
        [self dismissViewControllerAnimated:YES completion:^{
    
        if (_returnStrBlock != nil ) {
            _returnStrBlock(self.blockTEXT.text);
        }
        
        }];
        
    }
    

     3、接收返回值得A界面

    @interface ViewController (){
        BVCViewController*bvc;
    }
    
    - (IBAction)gotoVC:(id)sender {
        
        bvc = [[CViewController alloc]initWithNibName:@"CViewController" bundle:nil];
        
        // 5
        [bvc returenText:^(NSString *str) {
            self.A.text = str;
        }];
        
        [self presentViewController:bvc animated:YES completion:nil];
        
    }
    
  • 相关阅读:
    奇怪的html控件textarea
    ado.net快速上手实践篇(二)
    巧用apply让javascript函数仅执行一次
    javascript:像操作Array一样操作NodeList
    javascript下的数值型比较真的没有那么简单
    ado.net快速上手实践篇(一)
    ado.net快速上手疑问及解答(完结篇)
    如何利用【百度地图API】进行定位?非GPS定位
    【百度地图API】关于如何进行城市切换的三种方式
    【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注
  • 原文地址:https://www.cnblogs.com/mapanguan/p/5472662.html
Copyright © 2011-2022 走看看