Object-c: Block (方法块)

来源:互联网 发布:大数据分析是什么专业 编辑:程序博客网 时间:2024/05/17 00:57
1、block 是个方法块,他可以提前定义,在调用出在执行。定义格式如下:


int (^sum) (int, int) = ^(int a, int b){
return a+b;
};


其中^是block的一个符;


2、还可以将block定义成一个typedef:


typedef (int) (^sum) (int,int);


@property (nonatuomic,assign) sum sumBlock;


3、使用block可以构建一个简单的回掉,下面是核心代码实现:


Button.h


@Class Button;


typedef (void) (^ButtonBlock) (Button *btn);


@interface Button : NSObject


@property (nonautomic,assign) ButtonBlock listenerBlock;


-(void) click;


@end


Button.m


@implementation Button


-(void)click{
_listenerBlock(self); //里面传递一个参数,此参数为Button对象本身。
}


@end


main.m


#import <Foundation/Foundation.h>
#import "Button.h"


int main(int argc, const char * argv[])
{
@autoreleasepool {
Button *btn =[[[Button alloc]init]autorelease];


btn.listenerBlock = ^(Button *btn){
NSLog(@"%@这个对象被点击了。");
};


[btn click];
}
return 0;


}
0 0
原创粉丝点击