首页 > 代码库 > 我所了解的block
我所了解的block
本文章参照李明杰老师的视频.
使用block 首先要会声明和实例化block
block 的声明:
block 分为 有返回值有参数,没返回值有参数,有返回值没参数,没返回值没参数 几种情况
有返回值 有参数的 int (^argReturnBlock)(int,int);
其他几种分别是 int (^ReturnBlock)();
void (argBlock)(int,int);
void (nonBlock)();
然后实例化
举一个例子:
int (int argReturnBlock)(int,int);
argReturnBlock = ^(int v1,int v2){
return v1 + v2;
};
最后是调用
int result = ArgReturnBlock (13,34);
/////////////////////////////////////////////////////////
block 的回调的使用例子;
监听按钮是否被点击了
MyButton * btn = [[MyButton alloc] init]; btn.buttonBlock = ^(MyButton *testbtn){ NSLog(@"%@___被店家了",testbtn); }; [btn click];
在调用click 方法的时候,会回调到上面的block 方法中去.
#import <Foundation/Foundation.h>@class MyButton;typedef void(^listenBlock)(MyButton *sender);@interface MyButton : NSObject@property (nonatomic,assign) listenBlock buttonBlock;- (void)click;@end
在
#import "MyButton.h"@implementation MyButton- (void)click{ _buttonBlock(self);}@end
程序运行顺序是当调用click 方法的时候,
会跳转到MyButton.m 中的click 方法中,在这个方法中有_buttonBlock(self);
就会跳转到_buttonBlock 声明的地方,就是外面实例化该block 的地方.
block 的用途:
- 任务完成时回调处理
- 消息监听回调处理
- 错误回调处理
- 枚举回调
- 视图动画、变换
- 排序
- http://blog.csdn.net/jasonblog/article/details/7756763
- 具体参照这个链接中的内容.
再有block 是怎么存储的,
我所了解的block
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。