block传值 iOS

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

/*
 用typedef 定义 block 类型
 在 委托/主动方 定义block变量  调用 block
 把block 代码块 作为代理 写在 被动方
 */
//.h文件里面  第二个页面
#import <UIKit/UIKit.h>
/*typedef定义block    int返回参数类型  ChangeStatus  block函数名     status传过去的参数名  NSString*  status的类型*/
typedef int (^ChangeStatus) (NSString* status);

@interface SecondViewController : UIViewController

//这里要用copy   定义block 对象名
@property (nonatomic,copy) ChangeStatus changeStatus;

@end
//.m文件
#import "SecondViewController.h"
@interface SecondViewController ()
@end

@implementation SecondViewController

- (void)viewDidLoad
{
if (self.changeStatus) {//判断一下
        /*回调 外界传入的 block
   han 传过去的参数
   ak 返回来的参数*/
    NSString* han = @"123";
    int ak =  self.changeStatus(han);
        NSLog(@"%d",ak);
    }else{
        NSLog(@"没有传入block");
    }
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


//第一个页面.m文件
- (void)viewDidLoad
{

_svc = [[SecondViewController alloc] init];
    
    /*
  NSString* status block传过去的字符串   return 3; 返回过去的参数
{}里面的status是回调回来的参数
*/
    _svc.changeStatus = ^(NSString* status){
        NSLog(@"%@",status);
        return 3;
    };

}



@end