NSObject+BBALambda.h
1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//
// NSObject+BBALambda.h
// BBAPods
//
// Created by xmfeng on 17/4/18.
// Copyright © 2017年 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "BDPFoundationDefines.h"
/*
* 生成一个lambda对象并将其绑定到自己上,建议与UIControl addTarget: action:forControlEvents: 和 UIBarButtonItem 初始化方法配合使用,使用例子如下:
* [UIBarButtonItem alloc] initWithTitle: style:UIBarButtonItemStylePlain target:[self bba_bindBlock:block] action:@selector(bba_execute)
* button addTarget:[button bba_bindLambda:lambda] action:@selector(bba_executeWithSender:) forControlEvents:
* 详细介绍请看README-BBARuntime
*/
/**
@block
@brief 默认的 Lambda (闭包)
@param sender 传递的参数
*/
typedef void (^BBALambda)(id sender);
/*
* lambda对象,可以执行execute方法
*/
@interface BBALambdaObject : NSObject
/**
* @brief 初始化一个lambda对象
*
* @param lambda 默认的 Lambda (闭包),带一个sender参数
* @return BBALambdaObject 实例
*/
- (id)initWithLambda:(BBALambda)lambda;
/**
* @brief 执行 lambda(nil),建议与 bba_bindBlock 配合使用
*
*/
- (void)bba_execute;
/**
* @brief 执行 lambda(sender),建议与 bba_bindLambda 配合使用
*
* @param sender 传递的参数
*/
- (void)bba_executeWithSender:(id)sender;
@end
@interface NSObject (BBALambda)
/**
* @brief 绑定一个不带任何参数的 Lambda
*
* @param block void(^)(void)
* @return BBALambdaObject
*/
- (BBALambdaObject *)bba_bindBlock:(void(^)(void))block BDP_FOUNDATION_DEPRECATED("please use bdp_bindBlock:");
- (BBALambdaObject *)bdp_bindBlock:(void(^)(void))block;
/**
* @brief 绑定一个默认的 Lambda
*
* @param lambda void (^)(id sender)
* @return BBALambdaObject
*/
- (BBALambdaObject *)bba_bindLambda:(BBALambda)lambda BDP_FOUNDATION_DEPRECATED("please use bdp_bindLambda:");
- (BBALambdaObject *)bdp_bindLambda:(BBALambda)lambda;
@end