清华大佬耗费三个月吐血整理的几百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