block的使用(一)
block的使用(一)
我爱觉觉 发表于2年前
block的使用(一)
  • 发表于 2年前
  • 阅读 24
  • 收藏 0
  • 点赞 1
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: block类型是一个C级别的语法和运行机制。它与标准C函数类型相似,不同之处在于,它除了有可执行代码以外,它还包含了堆栈内存绑定的变量,因此,block对象包含着一组状态数据,这些数据在程序执行时用于对行为产生影响。block既包含了回调期间的代码,又包含了执行期间需要的数据。

        //1)无参无返回值的block

        //格式:

        // 定义block变量

        // 返回值类型 (^block变量名)(形参类型列表);

        

        // 定义block类型并且赋值

        // 返回值类型 (^block变量名)(形参类型列表)= ^(形参列表){代码块;}

        // 形式1: void^block变量名)() = ^(){};

        // 形式2: void^block变量名)() = ^{};

        

        // 定义变量

        void (^sbblock)();

        void (^sb1)() = ^() {

            NSLog(@"haha");

        };

        

        void (^sb2)() = ^{

            NSLog(@"22");

        };

        

        // 执行block

        // 格式:block变量名(实参)

        // sbblock(); EXC_BAD_ACCESS(code=1,) 野指针访问报错,因为sbblock没有初始化。

        sb1();

        sb2();

        

        // 2)有参无返回值的block

        // 形参列表的格式: 数据类型 变量名

        void (^myblock1)(int a); //定义一个无返回值有一个参数的block变量,变量名为mblock1

        myblock1 = ^(int a) {

            NSLog(@"a = %d",a);

        };

        

        myblock1(2);

        

        // 3)有参数有返回值的block

        int (^myblock2)(int a, int b) = ^(int a, int b){

            return a+b;

        };

        // 执行block并且接收返回结果

        int sum = myblock2(20,34);

        NSLog(@"%d",sum);


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 49
码字总数 10640
×
我爱觉觉
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: