/*
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;
}