Block的简单使用
2016-04-12 10:19
633 查看
定义Block时,可以对Block的输入参数以及返回值的类型进行定义。可以有输入参数,也可以没有输入参数;可以设置一个输入参数,也可以设置多个参数;可以有返回值,也可以没有返回值。
这种形式的Block,无需任何输入参数,并且无返回值,一般都是在该Block中完成一些动作,例如在完成一段动画后,执行一段Block,如下所示:
@interface UIView(UIViewAnimationWithBlocks)
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations;
我们也可以自定义一个无输入参数、无返回值的Block,如下所示:
void (^blockWithOutInputAndOutput) (void) = ^(void){
NSLog(@"block Called!");
};
这种形式的Block,有输入参数,但无返回值。一般都是在该Block中根据输入参数完成一些动作,例如,在AFNetworking中,当获取到网络反馈的数据后,会调用一个Block,并且把从服务器获取的数据作为参数,传入Block。
- (AFHTTPRequestOperation *)POST:(NSString *)URLString
parameters:(id)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure];
[self.operationQueue addOperation:operation];
return operation;
}
我们也可以自定义一个有输入参数、无返回值的Block,如下所示:
void (^blockWithInput)(int) = ^(int inputNum) {
NSLog(@"blockWithInput Called!");
};
Block定义
int (^blockWithOutputAndInput)(int) = ^(int inputNum) {
NSLog(@"blockWithOutputAndInput Called!");
return inputNum;
};
Block调用
int intNumber2 = blockWithOutputAndInput(200);
NSLog(@"blockWithOutputAndInput:%d",intNumber2);
可以在Block定义中传入多个参数。
Block的定义
double (^multiplyTwoValues)(double, double) = ^(double number1, double number2) {
return number1 * number2;
};
Block的调用
double doubleNumber = multiplyTwoValues(5.0,5.6);
NSLog(@"multiplyTwoValues: %f",doubleNumber);
Block的定义
int (^blockWithOutput) (void) = ^(void){
NSLog(@"blockWithOutput Called!");
return 100;
};
Block的调用
int intNumber1 = blockWithOutput();
NSLog(@"blockWithOutput:%d", intNumber1);
1、无输入参数+无返回值
这种形式的Block,无需任何输入参数,并且无返回值,一般都是在该Block中完成一些动作,例如在完成一段动画后,执行一段Block,如下所示:@interface UIView(UIViewAnimationWithBlocks)
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations;
我们也可以自定义一个无输入参数、无返回值的Block,如下所示:
void (^blockWithOutInputAndOutput) (void) = ^(void){
NSLog(@"block Called!");
};
2、有输入参数+无返回值
这种形式的Block,有输入参数,但无返回值。一般都是在该Block中根据输入参数完成一些动作,例如,在AFNetworking中,当获取到网络反馈的数据后,会调用一个Block,并且把从服务器获取的数据作为参数,传入Block。- (AFHTTPRequestOperation *)POST:(NSString *)URLString
parameters:(id)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure];
[self.operationQueue addOperation:operation];
return operation;
}
我们也可以自定义一个有输入参数、无返回值的Block,如下所示:
void (^blockWithInput)(int) = ^(int inputNum) {
NSLog(@"blockWithInput Called!");
};
3、有输入参数+有返回值
Block定义int (^blockWithOutputAndInput)(int) = ^(int inputNum) {
NSLog(@"blockWithOutputAndInput Called!");
return inputNum;
};
Block调用
int intNumber2 = blockWithOutputAndInput(200);
NSLog(@"blockWithOutputAndInput:%d",intNumber2);
4、有多个输入参数
可以在Block定义中传入多个参数。Block的定义
double (^multiplyTwoValues)(double, double) = ^(double number1, double number2) {
return number1 * number2;
};
Block的调用
double doubleNumber = multiplyTwoValues(5.0,5.6);
NSLog(@"multiplyTwoValues: %f",doubleNumber);
5、无输入参数+有返回值
Block的定义int (^blockWithOutput) (void) = ^(void){
NSLog(@"blockWithOutput Called!");
return 100;
};
Block的调用
int intNumber1 = blockWithOutput();
NSLog(@"blockWithOutput:%d", intNumber1);
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码