在我个人看来,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 ju
stForTest:nil block:^(NSString *string){
NSLog(@"string");
}];
转载于:https://www.cnblogs.com/larryblog/archive/2012/10/11/2720283.html