代码块_iOS_2

来源:互联网 发布:java 里面执行 js代码 编辑:程序博客网 时间:2024/05/29 16:19

    int multiplier = 7;

    int/*myBlock是块对象,返回整型值。*/ (^myBlock)/*^符号将myBlock声明为一个块对象*/(int)/*它有一个参数,参数的类型也是整型值*/ =/*这是块对象的主体部分*/ ^(int num)/*参数名称是num*/{/*这是定义块对象的语法结构。这部分就是赋给myBlock变量的值。*/

        return num * multiplier;

    };

    int result = myBlock(4);

    DLog(@"result is %d",result);

   // self.view.transform = CGAffineTransformMakeRotation(M_1_PI);

    /*

        参数是NSString *的代码块

     */

    void (^printBlock)(NSString * x);

    printBlock = ^(NSString * str)

    {

        NSLog(@"print:%@",str);

    };

    printBlock(@"hello world!");

    

    /*

        代码用在字符串数组排序

     */

    NSArray * stringArray = [NSArrayarrayWithObjects:@"abc 1",@"abc 21",@"abc 12",@"abc 13",nil];

    

    NSComparator sortBlock = ^(id string1,id string2){

        return [string1 compare:string2];

    };

    NSArray * sortArray = [stringArray sortedArrayUsingComparator:sortBlock];

    NSLog(@"sortArray:%@",sortArray);

    

    /*

        代码块的递归调用

     */

    static void (^ const blocks)(int) = ^(int i){

        if (i > 0) {

            NSLog(@"num:%d",i);

            blocks(i-1);

        }

    };

    blocks(3);

    

    /*

        在代码块中使用局部变量和全局变量

     */

    

    void(^block)(void) = ^(void)

    {

        global++;

        NSLog(@"global %d",global);

    };

    block();

    NSLog(@"global:%d",global);

    

    __block int local =500;

    void(^block1)(void) = ^(void)

    {

        local++;

        NSLog(@"local:%d",local);

    };

    block1();

    NSLog(@"local:%d",local);

    

    NSArray * cards = [NSArrayarrayWithObjects:@"Jack",@"Queen",@"King",@"Ace",nil];

    [cards enumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop) {

        NSLog(@"%@ card at index %d",obj,idx);

    }];

    

    

    void (^now)(void) = ^{

        NSDate * date = [NSDatedate];

        NSLog(@"The date and time is %@",date);

    };

    now();

    

    int (^multiply)(int,int) = ^(int x,int y){

        return x * y;

    };

    NSLog(@"multiply is %d",multiply(2,3));

    

    

    int (^tripler)(int) = ^(int number) {

        return number * 3;

    };

    typedef int (^ComputationBlock)(int);

    [GigaHomeViewControlleriterateFromOneTo:5withBlock:tripler];


+ (void)iterateFromOneTo:(int)limit withBlock:(int (^)(int))block {

    for (int i = 1; i <= limit; i++) {

        int result = block(i);

        NSLog(@"iteration %d => %d", i, result);

    }

}

    

0 0
原创粉丝点击