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