1.block 基本使用是控制器之間的通訊使用。
2.block 高級(jí)使用則是,作為鏈?zhǔn)骄幊虂?lái)使用, Masonry 是典型的鏈?zhǔn)骄幊?,響?yīng)試編程則是RAC。
簡(jiǎn)單Dome,person類
//person.h
1.1 block定義,控制器之間的通訊如下 ,block 作為屬性
/*
--單純的屬性block。
*/
@property (nonatomic,strong) void(^blocktext1)();
//實(shí)現(xiàn)block
Person *p = [[Person alloc] init];
//建議使用第一種方式,簡(jiǎn)單快捷!系統(tǒng)直接給你生成
[p setBlocktext1:^{
}];
p.blocktext1 = ^{
};
1.2typedef定義block ,block作為函數(shù)參數(shù)
/*
typedef 定義,以下全部使用
*/
typedef void (^blocktypeNull) ();
typedef void (^blocKtypePar) (NSInteger age,NSString *name);
typedef int (^blocktypeReturn)();
/*
--block作為函數(shù)參數(shù)----
/
/ 1.<block無(wú)參數(shù)的函數(shù)*/
(void)Textblocks:(blocktypeNull ) block;
/* 2.<block帶參數(shù)的函數(shù)*/(void)textblocksPar:(blocKtypePar) Detailpar;
/* 2.<block帶返回值*/(void)textblockReturn:(int (^)(int age)) returnpar;
(void)testblockreturn:(blocktypeReturn) testblock;
/*
--block 做為函數(shù)返回值----
*/
/* 1.<block作為函數(shù)返回值 無(wú)參數(shù)*/
- (blocktypeNull) TextonereturnPar;
/* 2.<block作為函數(shù)返回值 有參數(shù)*/ - (blocKtypePar) textTowReturnPar;
/* 3.<block作為函數(shù)有回值 有參數(shù)*/ - (blocktypeReturn) TextThessReturnPar;
-----<Person.m>
-(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(@"無(wú)參數(shù)的 函數(shù)block");
};
}
- (blocktypeReturn)TextThessReturnPar{
return ^int(){
return 30;
};
}
VIewController控制器 實(shí)現(xiàn)方法
Person *p = [[Person alloc] init];
[p Textblocks:^{
NSLog(@"無(wú)參數(shù)無(wú)返回值");
}];
[p textblocksPar:^(NSInteger age, NSString *name) {
NSLog(@"%ld%@",age,name);
}];
[p textblockReturn:^int(int age) {
return age;
}];
[p testblockreturn:^int{
NSLog(@"進(jìn)來(lái)了");
return 30;
}];
//鏈?zhǔn)骄幊?br>
p.textTowReturnPar(10,@"20");//在這里全部都是調(diào)用
p.TextonereturnPar();
int a = p.TextThessReturnPar();