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");
}];
posted @ 2012-10-11 17:35  Larry Lee  阅读(1454)  评论(0编辑  收藏  举报