您的位置:首页 > 移动开发 > Objective-C

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: