ios开发--block编程
在我个人看来,block编程和delegate 的回调机制差别不大。闲暇之余研究了一下,下面谈谈个人心得吧。
声明这样一个block
typedef void (^BlockTestXH)(NSString *string);//string想要返回的字符串,当然这里可以是NSArray,NSDictionary等等。
也可以无返回值,这样block就要写为:
typedef void (^BlockTestXH)()
//使用
@interface BlockTest : NSObject{
BlockTestXH _blockTestXH;//类中block成员变量
}
-(void)justForTest:(NSString *)string block:(BlockTestXH)block;
@end
@implementation BlockTest
-(void)justForTest:(NSString *)string block:(BlockTestXH)block{
_blockTestXH=Block_copy(block);//这里需要copy
_blockTestXH(Can I success?);//()中的string为要回传的值
}
-(void)dealloc{
Block_release(_blockTestXH);//记得release
[super dealloc];
}
@end
//调用
创建BlockTest对象,BlockTest *blockTest=[[BlockTest alloc]init];
[blockTest justForTest:nil block:^(NSString *string){
NSLog(@"string");
}];
声明这样一个block
typedef void (^BlockTestXH)(NSString *string);//string想要返回的字符串,当然这里可以是NSArray,NSDictionary等等。
也可以无返回值,这样block就要写为:
typedef void (^BlockTestXH)()
//使用
@interface BlockTest : NSObject{
}
-(void)justForTest:(NSString *)string block:(BlockTestXH)block;
@end
@implementation BlockTest
-(void)justForTest:(NSString *)string block:(BlockTestXH)block{
_blockTestXH=Block_copy(block);//这里需要copy
_blockTestXH(Can I success?);//()中的string为要回传的值
}
-(void)dealloc{
}
@end
//调用
创建BlockTest对象,BlockTest *blockTest=[[BlockTest alloc]init];
[blockTest justForTest:nil block:^(NSString *string){
}];