Objective-c - block作为方法的参数
2017-01-12 16:57
204 查看
/*
Objective-c - block作为方法的参数
block做为方法的参数可以实现按自己的打印要求传入参数,实现对一个数组的遍历.
将便利出来的数据交给调用者去处理.
调用者可以下一段符合参数要求的代码做为参数传递到方法内部,实现自己对遍历出来的数据的处理.
如下代码:
*/
#import <Foundation/Foundation.h>
#pragma mark -
#pragma mark 类的声明
//使用typedef简化参数
typedef void(^NewType)(int value);
@interface YYArray :
NSObject
//block作为方法的参数
- (void)printWithBlock:(NewType)demand;
@end
#pragma mark -
#pragma mark 类的实现
@interface YYArray ()
{
int arr[10];
}
@end
@implementation YYArray
//重写init方法
- (instancetype)init
{
if(self = [super
init])
{
for(int i =
0; i < 10; i++)
{
arr[i] = (i +
1) * 10;
}
}
return
self;
}
//block作为方法的参数
- (void)printWithBlock:(NewType)demand
{
for(int i =
0; i < 10; i++)
{
demand(arr[i]);
}
}
@end
#pragma mark -
#pragma mark main函数
int main(int argc,
const char * argv[]) {
//创建对象
YYArray *arr = [YYArray
new];
//按自己的要求初始化符合类型的block变量
NewType b1 = ^void(int value){
NSLog(@"%d", value/10);
};
//1,调用方法的时候传入参数
[arr printWithBlock:b1];
//2,调用方法的时候直接为方法传入一段符合参数要求的代码段
[arr printWithBlock:^void(int value){
NSLog(@"%d", value*10);
}];
return 0;
}
Objective-c - block作为方法的参数
block做为方法的参数可以实现按自己的打印要求传入参数,实现对一个数组的遍历.
将便利出来的数据交给调用者去处理.
调用者可以下一段符合参数要求的代码做为参数传递到方法内部,实现自己对遍历出来的数据的处理.
如下代码:
*/
#import <Foundation/Foundation.h>
#pragma mark -
#pragma mark 类的声明
//使用typedef简化参数
typedef void(^NewType)(int value);
@interface YYArray :
NSObject
//block作为方法的参数
- (void)printWithBlock:(NewType)demand;
@end
#pragma mark -
#pragma mark 类的实现
@interface YYArray ()
{
int arr[10];
}
@end
@implementation YYArray
//重写init方法
- (instancetype)init
{
if(self = [super
init])
{
for(int i =
0; i < 10; i++)
{
arr[i] = (i +
1) * 10;
}
}
return
self;
}
//block作为方法的参数
- (void)printWithBlock:(NewType)demand
{
for(int i =
0; i < 10; i++)
{
demand(arr[i]);
}
}
@end
#pragma mark -
#pragma mark main函数
int main(int argc,
const char * argv[]) {
//创建对象
YYArray *arr = [YYArray
new];
//按自己的要求初始化符合类型的block变量
NewType b1 = ^void(int value){
NSLog(@"%d", value/10);
};
//1,调用方法的时候传入参数
[arr printWithBlock:b1];
//2,调用方法的时候直接为方法传入一段符合参数要求的代码段
[arr printWithBlock:^void(int value){
NSLog(@"%d", value*10);
}];
return 0;
}
相关文章推荐
- Objective-c - block作为方法的参数:字符串数组的排序
- Objective-c - block作为函数的参数
- 谈谈Block作为属性、方法参数、方法的返回值的应用
- Objective-C - 对象作为方法的参数
- objective-C block作为参数使用
- Array或ArrayCollection作为java方法参数
- this指针作为函数隐含参数传递的方法
- 梆定一个方法并把数据库中的值作为参数
- 问题(怎样在dephi中引用.net中定义的类.方法参数,参数类型为XMLdocument?我要调用此方法并把实例花的xmldocument类型的变量作为参数给它。)
- .Net (C#)委托和事件(将方法作为方法的参数)
- 二维数组的存储方式及其作为参数的方法
- Form使用内表作为参数的方法
- 匿名方法---将代码块作为参数传递给委托
- objective-c 中定义多参数的方法
- javascript委托的实-现 以带参数的函数作为参数的解决方法
- 数组作为方法参数
- 数组如何作为方法的参数
- Delphi 二维数组作为参数 注意方法
- C#委托-委托作为方法的参数