mian.m
#import <Foundation/Foundation.h>
#import "Login.h"
#import "Register.h"
int main(int argc,const char * argv[]) {
@autoreleasepool {
Login *log=[[Loginalloc]init];
NSLog(@"gogo Login");
[log toRegister];
NSLog(@"Register");
NSLog(@"注册的信息是:用户名是:%@ 用户密码是:%@",log.userName,log.passWord );
}
return 0;
}
Login.h
#import <Foundation/Foundation.h>
@interface Login : NSObject
@property (nonatomic,strong)NSString *userName;
@property (nonatomic,strong)NSString *passWord;
-(void)toRegister;
@end
Login.h
#import "Login.h"
#import "Register.h"
@implementation Login
//跳转到注册界面
-(void)toRegister
{
NSLog(@"User no font,GO Register");
Register *reUI=[[Registeralloc]init];//定义Register类型的对象reUI
reUI.block=^(NSString *str1,NSString *str2){//调用Register中的代码块block 并将返回值str1 和str2接收
_userName=str1;//将名字和密码赋值
_passWord=str2;
};
//输入个人信息
[reUI printInfo];
[reUI toLogin];
}
@end
Register.h
#import <Foundation/Foundation.h>
#import "Login.h"
typedef void (^BlockType)(NSString *str1,NSString* str2);//定义代码块的类型
@interface Register : NSObject
@property (nonatomic,strong)NSString *rName;
@property (nonatomic,strong)NSString *rWord;
@property (nonatomic,strong)Login *lg;//定义Login类型的对象
@property (nonatomic,strong)BlockType block;//定义代码块对象
-(void)printInfo;
-(void)toLogin;
@end
Register.m
#import "Register.h"
@implementation Register
-(void)printInfo
{
_rName=@"listen to rain";
_rWord=@"123456";
}
-(void)toLogin
{
//把用户名和密码传递给登录界面
// [self.lg setUserName:_rName];
// [self.lg setPassWord:_rWord];
//等价
// _lg.userName=_rName;
// _lg.userName=_rWord;
NSLog(@"注册成功,返回登录");
_block(_rName,_rWord);
}
@end
代码的运行顺序是
main方法中的
[log toRegister];
跳转到Login方法中执行到
Register *reUI=[[Registeralloc]init]
调用Register中的方法将两个返回值赋值到代码块中之后
返回Login方法中