黑马程序员技术交流社区

标题: 二战黑马:block类型 [打印本页]

作者: 崔石炫    时间: 2014-10-23 23:51
标题: 二战黑马:block类型
  1. //  main.m
  2. /*
  3. block与函数的相似之处:
  4. * 都能封装一段代码
  5. * 都能接收参数
  6. * 都有返回值

  7. 函数的定义:
  8. * 无参数、无返回值
  9.    void myFunction()
  10.    {
  11.         NSLog(@"没有参数、没有返回值的函数");
  12.    }
  13. * 有参数、有返回值
  14.    int sumFunction(int a , int b)
  15.    {
  16.         return (a+b)/2;
  17.    }

  18. block的定义:
  19. * 无参数、无返回值
  20.    void (^myBlock)() = ^(){
  21.         NSLog(@"没有参数、没有返回值的block");
  22.    };
  23. * 有参数、有返回值
  24.    int (^sumBlock)(int , int) = ^(int a , int b){
  25.         return (a+b)/2;
  26.    };

  27. 用typedef定义新类型:
  28. typedef double (^NewBlockType)(double , double);
  29. NewBlockType averageBlock = ^(double a , double b){
  30.     return (a+b)/2;
  31. };
  32. */

  33. #import <Foundation/Foundation.h>
  34. typedef double (^AverageBlock) (double , double); //用typedef宏定义来定义新类型AverageBlock

  35. int main(int argc, const char * argv[])
  36. {

  37.     @autoreleasepool {
  38.         
  39.         void (^myBlock) (); //定义一个没有返回值,没有参数的block变量myBlock
  40.         myBlock = ^(){
  41.             NSLog(@"hello , world");
  42.         };
  43.         
  44.         myBlock();
  45.         
  46.         
  47.         int (^sumBlock) (int , int); //定义一个block变量sumBlock,接收2个int类型参数,返回int类型
  48.         sumBlock = ^(int a , int b){
  49.             return a+b;
  50.         };
  51.         
  52.         int sum = sumBlock(12 , 53);
  53.         NSLog(@"%d" , sum);
  54.         
  55.         AverageBlock averageBlock;
  56.         averageBlock = ^(double a , double b){
  57.             return (a+b)/2;
  58.         };
  59.         NSLog(@"%f" , averageBlock(23.6 , 642.4));
  60.     }
  61.     return 0;
  62. }
复制代码



作者: 弹琴骚年    时间: 2014-10-23 23:54
老师说推荐使用block类型处理问题。。好像也不是很多人用。。
作者: 崔石炫    时间: 2014-10-24 00:05
弹琴骚年 发表于 2014-10-23 23:54
老师说推荐使用block类型处理问题。。好像也不是很多人用。。

还没学到要用block的地方,视频里讲UI很多用block吧。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2