首页 > 代码库 > 我所了解的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