美文网首页
block相关

block相关

作者: 必须这么打 | 来源:发表于2015-12-14 09:56 被阅读0次
    • 是写在方法里的,在方法里定义个block,有返回值的,以;结尾,block只有被调用的时候才能执行 {} 里的代码。(如果有同名的优先调局部的)

    • 在类中,定义一个Block变量,就像定义一个函数
      代表有(名),(参数),(返回值)。

    • 没有参数的无返回值:

    -(void)viewDidLoad{
         [super viewDidLoad];
        
          void (^printBlock) () = ^(){
          //block 内部
           NSLog(我再block内部);
        };
          printBlock ();
    }
    
    • 有参数的有返回值:
    int (^squer)(int) = ^(int num){
        return num*num;
    };
    NSLog (@"%d",squre(3));
    

    x+y

    int x =4;
    square(3);
    //__block 关键字 修饰 需要在block
    
    __block int x =4;
    void (^sum)(int) = ^(int y){
    x += y;
    NSLog(@"%d",x+y);
    };
    sum(100);
    

    Block传值

    .h 第二个页面

    typedef void (^sendValue)(NSString *);
                 //多个情况下 (NSString *,NSString*);
    @property (nonatomic,assign) sedValue sv;
    

    .m 第二个页面

    -(IBAction)click:(id)seder{
    [self dismissViewControllerAniamted:YES competin:^{
        _blockUpdateBtnTitle(@"传值");
      //多个 ^{ self.sv(@"传值",@"传值");
    }];
    }
    
    

    .m 第一个页面

    -(IBAction)jump:(id)sender{
    SecondViewController *second = [[SecondViewController alloc] init];
    second.sv = ^(NSString * str){
          //多个 ^(NSString * str,NSString *name)
          self.valueLabel.text = str;
    //多个 self.valueLabel.text = [NSString stringWithFormat:@"%@ %@",str,name];
    };
    [self presentViewController:second animated:YES completion:nil];
    }
    

    相关文章

      网友评论

          本文标题:block相关

          本文链接:https://www.haomeiwen.com/subject/prkuhttx.html