block的声明及使用(基础)

来源:互联网 发布:韩国网络直播间 编辑:程序博客网 时间:2024/05/19 00:12
////  main.m//  8_8_block////  Created by lanou3g on 15/8/8.//  Copyright (c) 2015年 lanou3g. All rights reserved.//#import <Foundation/Foundation.h>//block的typedef,在使用的时候,不用*typedef int(^kIntFromString) (NSString*);typedef NSString *(^kAppendingString) (NSString *,NSString*);typedef void(^kSayhi)();//定义函数4部分内容:返回值类型,参数列表,函数名,函数体{实现某个功能的代码段}//练习函数,无参数void sayHi(){    NSLog(@"hihihihihi");}//练习函数,有参数int  sum(int a ,int b){    return a+b;}int main(int argc, const char * argv[]) {    @autoreleasepool {        sayHi();        int a = 1,b = 2;        NSLog(@"%d",sum(a,b));        //通过函数指针调用函数,函数名是函数所在存储空间的起始地址        //定义与某个函数相同类型的指针指向函数        void (*p)();        //指向时,没有括号和参数;        p = sayHi;        //使用时,即使没有参数,也要带上括号        p();        int (*p1)(int ,int ) = sum;        NSLog(@"%d",p1(1,5));#pragma mark--------------block定义        //block的本质就是匿名函数        //托字符,向上箭头,在大括号的最后有分号,这是和函数的又一个区别。        /*         ^ 返回值类型(参数列表){         };         */        ^ void (){            NSLog(@"hello ,this is dog");        };        //定义block ,实现返回两个数的最大值        ^ int (int a, int b){            return a>b?a:b;        };        //定义block,实现返回两个数的乘积        ^ int (int a ,int b){            return a*b;        };#pragma mark -----------------block的使用        //定义与block类型相同的变量, 操作block        //block 类型:返回值,和参数列表来确定类型。返回值类型不应用括号括起来        //定义block变量操作,定义与block相同的变量来接受操作        void (^sayHiBlock)() = ^ void ()        {            NSLog(@"hihihi");        };        //使用时也得加括号        sayHiBlock();        int (^sumBlock)(int ,int ) = ^int (int a ,int b){            return a+b;        };        int (^maxblock)(int ,int ) = ^int (int a ,int b){            return a>b?a:b;        };        NSLog(@"%d",maxblock(19,25));        //定义block,传入一个字符串,返回对应的整形数        int (^stringToIntBlock)(NSString *) = ^ int (NSString * s)        {            return [s intValue];        };        NSLog(@"%d" , stringToIntBlock(@"26353456246234"));        //定义block,传入两个字符串,返回拼接后的字符串.后面的block中的返回值类型可以省略       NSString *(^pinjieBlock)(NSString *,NSString *) = ^(NSString *s1,NSString *s2)        {            NSString *s3 = [s1 stringByAppendingFormat:@"%@",s2];            return s3;        };        kSayhi hi = ^()        {            NSLog(@"汪汪汪");        };        hi();        kIntFromString fstring = ^(NSString *s)        {            return [s intValue];        };        NSLog(@"%d",fstring(@"999"));        kAppendingString pj = ^(NSString *firstName,NSString *lastName){            return [firstName stringByAppendingString:lastName];        };    }    return 0;}
0 0
原创粉丝点击