黑马程序员——OC语言Block

本文详细介绍了Objective-C中的Block概念,包括Block的定义、使用方法及其与函数的区别。通过具体示例讲解了如何定义Block、如何利用Block封装代码、以及如何在Block中访问外部变量等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------
1.作用:
    Block用来保存一段代码,方便程序随时调用,标志为^。
      定义Block变量: void (^名称)(形参 ) = ^{
                                                        }
       eg: 
int (^myblock)(int,int) = ^(int a,int b){
            return a+b;
            };

     利用block调用block内部代码:myblock();

(1)定义block变量
      1> int (^sumblock)(int ,int );  // 有形参
      2> void(^myblock)(); // 无形参

(2)利用block封装代码3种方法
     1> 
^(int a, int b){
         return a - b;        
        }; // 有形参</span>

     2> 
^( ){
        NSLog(@"-------");   
        }; // 无形参</span>

     3> 
^{
     NSLog(@"-----");
       }; // 无形参</span>


  (3)block访问外面变量
       1> block内部可以访问外面的变量

       2>默认情况下,block不能修改外面的局部变量。
            eg:  
        int b = 15;
        void (^myblock)=^{
          block b;// 如果在myblock在局部变量前声明_block,则可以直接修改
           b = 16; // 不能直接修改外部的局部变量、
          }

       3> 局部变量加上__block,则block内部变量可以修改此局部变量

  (4)利用typedef定义block类型
       typedef int (^myblock)(int , int ) ; // myblock是block的名字 有形参

2.block跟函数比较:
  1>相同点
   (1)可以保存代码
             eg: 
         void(^myblock)()
               {
               NSLog(@"----------"); // 保存此段代码块
            };</span>

   (2)有返回值
                eg:   
                int (^myblock)(int,int) = ^(int a,int b){
                           return a+b;
                         };

               上述代码返回值为int类型
   (3)有形参
           eg:   
        int (^myblock)(int,int) = ^(int a,int b){
                    return a+b;
                       };

             上述代码形参为a和b

   (4)调用方式一样
            eg: myblock(10,11 );
   
   2>不同点
     (1)block的标识符是^,而函数没有
     (2)block默认情况下不能修改局部变量,而函数在默认情况下可以修改成员变量。
     (3)在block情况下,当语句结束时,需要在大括号外部添加分号,而函数不需要。

3.总结:
   优点:可以方便程序随时调用某段代码或者某个功能,提高了程序编写效率,减少了程序的垃圾代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值