我所了解的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  的用途:

 

 

再有block 是怎么存储的,

 

posted @ 2014-10-24 00:00  lanacon  Views(188)  Comments(0Edit  收藏  举报