• Block详情


      1 #import "ViewController.h"
      2 
      3 @interface ViewController ()
      4 
      5 @end
      6 
      7 @implementation ViewController
      8 
      9 - (void)viewDidLoad {
     10     [super viewDidLoad];
     11     //没有返回值
     12     //[self testNoReturnValue];
     13     //[self testIntReturnValue];
     14     //[self testNSStringReturnValue];
     15     [self test];
     16 }
     17 -(void)test
     18 {
     19     //1.没有返回值,参数为对象类型
     20     void (^block1)(NSString *param) = ^(NSString *param){
     21         NSLog(@"%@",param);
     22     };
     23     block1(@"test");
     24     
     25     //2.返回值为对象类型,两个基本类型的参数
     26     NSString *(^block2)(int,int) = ^(int a,int b){
     27         return [NSString stringWithFormat:@"%d",a+b];
     28     };
     29     NSString *ret = block2(10,20);
     30     NSLog(@"%@",ret);
     31 }
     32 
     33 //有返回值,返回值为对象类型(NSString)
     34 -(void)testNSStringReturnValue
     35 {
     36     //1.没有参数
     37     NSString *(^block1)();
     38     block1 = ^{
     39       return @"你好";
     40     };
     41     NSString *ret1 = block1();
     42     NSLog(@"%@",ret1);
     43     
     44     //2.有一个参数,参数为基本类型
     45     NSString *(^block2)(int);
     46     block2 = ^(int age){
     47         return [NSString stringWithFormat:@"你今年%d岁",age];
     48     };
     49     NSString *ret2 = block2(10);
     50     NSLog(@"%@",ret2);
     51     
     52     //3.有一个参数,参数为对象类型
     53     NSString *(^block3)(NSString *);
     54     block3 = ^(NSString *name){
     55         return name;
     56     };
     57     NSString *ret3 = block3(@"小明");
     58     NSLog(@"%@",ret3);
     59     
     60     //4.有两个参数,参数都是对象类型
     61     NSString *(^block4)(NSString *,NSString *);
     62     block4 = ^(NSString *name1,NSString *name2){
     63         return [NSString stringWithFormat:@"%@,%@",name1,name2];
     64     };
     65     NSString *ret4 = block4(@"小明",@"小花");
     66     NSLog(@"%@",ret4);
     67 }
     68 //有返回值,返回值为基本类型
     69 -(void)testIntReturnValue
     70 {
     71     //1.没有参数
     72     int (^block1)(void);
     73     block1 = ^{
     74         return 200;
     75     };
     76     //使用
     77     int ret1 = block1();
     78     NSLog(@"%d",ret1);
     79     
     80     //2.有一个参数
     81     int (^block2)(int);
     82     block2 = ^(int age){
     83         return age;
     84     };
     85     //使用
     86     int ret2 = block2(50);
     87     NSLog(@"%i",ret2);
     88     
     89     //3.有一个参数,参数为对象类型
     90     int (^block3)(NSString *);
     91     block3 = ^(NSString *name){
     92         return (int)name.length;
     93     };
     94     int ret3 = block3(@"hello world");
     95     NSLog(@"%d",ret3);
     96     
     97     //4.有两个参数,两个对象类型
     98     int (^block4)(NSString *,NSString *);
     99     block4 = ^(NSString *name1,NSString *name2){
    100         return (int)(name1.length+name2.length);
    101     };
    102     int ret4 = block4(@"hello",@"world");
    103     NSLog(@"%i",ret4);
    104 }
    105 
    106 //没有返回值的
    107 -(void)testNoReturnValue
    108 {
    109     //1.没有参数
    110     //声明
    111     void (^block1)(void);
    112     //赋值
    113     block1 = ^{
    114         NSLog(@"void");
    115     };
    116     //使用
    117     block1();
    118     
    119     //2.没有返回值参数是基本类型
    120     //声明时的形参可以和赋值时不一样
    121     void (^block2)(int pa);
    122     //赋值
    123     block2 = ^(int param){
    124         NSLog(@"param = %d",param);
    125     };
    126     //使用
    127     block2(100);
    128     
    129     //3.有一个参数,参数是对象类型(NSString)
    130     //声明
    131     void (^block3)(NSString *);
    132     //赋值
    133     block3 = ^(NSString *name){
    134         NSLog(@"name = %@",name);
    135     };
    136     //使用
    137     block3(@"小明");
    138     
    139     //4.有两个参数,一个基本类型,一个对象类型
    140     void (^block4)(int,NSString *);
    141     block4 = ^(int age,NSString *name){
    142         NSLog(@"%@今年%d岁",name,age);
    143     };
    144     //使用
    145     block4(20,@"小明");
    146 }
    147 
    148 - (void)didReceiveMemoryWarning {
    149     [super didReceiveMemoryWarning];
    150     // Dispose of any resources that can be recreated.
    151 }
    152 
    153 @end
  • 相关阅读:
    Python基础知识
    Oracle 总结
    Linux基本命令
    测试理论
    计算机基础
    http常见的状态码,400,401,403状态码分别代表什么?
    html
    day21 包
    day20 模块引入的一些说明
    我又回来了???
  • 原文地址:https://www.cnblogs.com/liaods/p/4788919.html
Copyright © 2020-2023  润新知