反向传值 block

1).第二页中

1.声明block语法

typedef void(^MyBlock)(id object, NSString *text);

2.声明block的属性

@property (nonatomic, copy) MyBlock myblock;

//简写

@property (nonatomic, copy) void(^Block)(id object, NSString *text);

3.点击return调用用block

- (BOOL)textFieldShouldReturn:(UITextView *)textField{

   [textField resignFirstResponder];

   _myblock(self, textField.text);

//    _Block(self, textField.text);

   [self dismissViewControllerAnimated:YES completion:nil];

   return YES;

}

1).第一页中

创建第二页的引用,直接调用block

- (void)gotoPurpleVC:sender{

   PurpleViewController *vc = [PurpleViewController new];

   vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

   __block __weak __typeof(&*self)weakSelf = self;

   vc.myblock = ^(id object, NSString *text){

       self.label.text = text;

   };

   [self presentViewController:vc animated:YES completion:nil];

———————————————————————————————————————

   __block __weak __typeof(&*self)weakSelf = self;

 @property会使第二页的声明周期和第一页一样

 第二页 vc.myblock中有self会使第一页的生命周期和第二页一样

   //block中回引起循环应用问题 在block中不予许出现循环引用问题,导致视图控制器永远都不会被释放

   //vc 生命周期 == self, @property

   //self 生命周期 == vc, myblock赋值

   //为了打破这种循环, 必须使用__weak来修饰self

   //__block 只是代表某个block外部的参数可以在内部修改

———————————————————————————————————————

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,556评论 1 14
  • Block使用场景,可以在两个界面的传值,也可以对代码封装作为参数的传递等。用过GCD就知道Block的精妙之处。...
    Coder_JMicheal阅读 748评论 2 1
  • iOS开发中,页面传值是很常见的,但是页面传值你究竟知道多少呢?笔者这篇文章就是给大家介绍一下页面传值的具体方式,...
    蒲公英少年阅读 2,195评论 10 44
  • 在iOS 4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回...
    Clark_new阅读 506评论 0 4
  • Barcodes Talk: https://hans.barcodestalk.cn.com/bar-code-...
    鹏城云海阅读 163评论 0 0