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;
}
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;
}
本文介绍了Objective-C中Block的基础概念和用法,包括Block的定义、typedef的使用以及如何构建简单的回调机制。通过示例展示了Block如何作为回调在Button类中实现点击事件的处理。
849

被折叠的 条评论
为什么被折叠?



