OC--链式编程思想

1.block 基本使用是控制器之间的通讯使用。
2.block 高级使用则是,作为链式编程来使用, Masonry 是典型的链式编程,响应试编程则是RAC。
简单Dome,person类
//person.h
1.1 block定义,控制器之间的通讯如下 ,block 作为属性
/*
--单纯的属性block。
*/
@property (nonatomic,strong) void(^blocktext1)();

//实现block
Person *p = [[Person alloc] init];
//建议使用第一种方式,简单快捷!系统直接给你生成
[p setBlocktext1:^{

}];
p.blocktext1 = ^{
   
};

1.2typedef定义block ,block作为函数参数
/*
typedef 定义,以下全部使用
*/
typedef void (^blocktypeNull) ();
typedef void (^blocKtypePar) (NSInteger age,NSString *name);
typedef int (^blocktypeReturn)();

/*
--block作为函数参数----
/
/
1.

  • (void)Textblocks:(blocktypeNull ) block;
    /* 2.

  • (void)textblocksPar:(blocKtypePar) Detailpar;
    /* 2.

  • (void)textblockReturn:(int (^)(int age)) returnpar;

  • (void)testblockreturn:(blocktypeReturn) testblock;
    /*
    --block 做为函数返回值----
    */

/* 1.

  • (blocktypeNull) TextonereturnPar;
    /* 2.
  • (blocKtypePar) textTowReturnPar;
    /* 3.
  • (blocktypeReturn) TextThessReturnPar;

-----
-(void)Textblocks:(blocktypeNull)block{
block();
}

  • (void)testblockreturn:(blocktypeReturn)testblock{

    int age = testblock();
    NSLog(@"%d",age);

}

  • (void)textblockReturn:(int (^)(int age))returnpar{
int a =  returnpar(40);
NSLog(@"%d",a);

}
-(void)textblocksPar:(blocKtypePar)Detailpar{
if (Detailpar != nil) {
NSInteger Age = 22;
NSString *name = @"Ray";
Detailpar(Age,name);

}

}

  • (blocKtypePar)textTowReturnPar{
return ^(NSInteger age ,NSString *name){
    NSLog(@"age = %ld",age);
    NSLog(@"name = %@",name);
    
};

}

  • (blocktypeNull)TextonereturnPar{
return ^(){
    
    NSLog(@"无参数的 函数block");
};

}

  • (blocktypeReturn)TextThessReturnPar{
return ^int(){
    return 30;
    
};

}
VIewController控制器 实现方法
Person *p = [[Person alloc] init];
[p Textblocks:^{

    NSLog(@"无参数无返回值");

}];

[p textblocksPar:^(NSInteger age, NSString *name) {
    NSLog(@"%ld%@",age,name);
}];


[p textblockReturn:^int(int age) {

    return  age;
}];

[p  testblockreturn:^int{
    NSLog(@"进来了");
    return 30;
}];

//链式编程
p.textTowReturnPar(10,@"20");//在这里全部都是调用
p.TextonereturnPar();
int a = p.TextThessReturnPar();

你可能感兴趣的:(OC--链式编程思想)