代码块的调用

来源:互联网 发布:粤语听古仔软件下载 编辑:程序博客网 时间:2024/06/05 00:55

mian.m

#import <Foundation/Foundation.h>

#import "Login.h"

#import "Register.h"

int main(int argc,constchar * 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 fontGO 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方法中



0 0
原创粉丝点击