• [Objective-c 基础


    A.概念

    1.block类似函数
    (1)可以保存代码
    (2)有返回值
    (3)有形参 
    2.block的标志:^
     1     // 没有参数和返回值的block
     2     void (^myblock)() = ^{ // 没有形参,可以省略()
     3         NSLog(@"这是新定义的block");
     4     };
     5    
     6     myblock();
     7  
     8     // 带参数和返回值的block
     9     int (^sum)(int a, int b) = ^(int a, int b){
    10         return a + b;
    11     };
    12    
    13     int c = sum(10, 11);
    14     NSLog(@"%d", c);
     
    3.可以访问代码块外的数据
    1     int a = 10;
    2     void (^block)();
    3     block = ^{
    4         NSLog(@"a = %d", a);
    5     };
    6     block();
    out:
    2014-11-15 09:25:34.766 04-block[1355:303] a = 10
     
    4.不能修改代码块外的局部变量
    1     int a = 10;
    2     void (^block)();
    3     block = ^{
    4         a = 20; // 默认情况下, block内部不能修改外面的局部变量
    5         NSLog(@"a = %d", a);
    6     };
    7     block();
     
    解决:给局部变量加上”__block”(双下划线开头)关键字
    1     __block int a = 10;
    2     void (^block)();
    3     block = ^{
    4         a = 20; // error
    5         NSLog(@"a = %d", a);
    6     };
    7     block();
    out:
    2014-11-15 09:28:52.814 04-block[1376:303] a = 20
     
    5.使用typedef
     1 typedef int (^MyBlock) (int, int);
     2  
     3     MyBlock sumBlock;
     4     sumBlock = ^(int a, int b){
     5         return a + b;
     6     };
     7    
     8     MyBlock minusBlock;
     9     minusBlock = ^(int a, int b){
    10         return a - b;
    11     };
     
  • 相关阅读:
    const与readonly
    JQuery Tooltipster
    Log4Net使用
    asp.net mvc 4 beta 版已发布
    控件属性
    C# 获取当前路径
    对toLocaleString()、toString()、valueOf()的理解
    靶场练习3CSRF攻击
    计算字符串长度
    Android ListView 自定义适配器
  • 原文地址:https://www.cnblogs.com/hellovoidworld/p/4119380.html
Copyright © 2020-2023  润新知