IOS-Block(传值)相关


Block传值

.h 第二个页面

typedef void (^sendValue)(NSString *);
             //多个情况下 (NSString *,NSString*);
@property (nonatomic,strong) sedValue 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];
}

.m 第二个页面

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

  • 是写在方法里的,在方法里定义个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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这...
    小人不才阅读 3,788评论 0 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,259评论 1 23
  • 在内心失落的时候 不会倾诉 不会逢迎 只知道将它淹没在血液里 骨子里却越发失落 本以为不能坚持到最后 ...
    不哭小孩阅读 298评论 0 3
  • 来源:网络版权归原作者 (图文综合自网络) 有一个男的,没考上大学,父母就给他找了个老婆结婚了,结婚后就在本村的小...
    乐观生活一斌阅读 486评论 0 0