A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔石炫 中级黑马   /  2014-10-23 23:51  /  633 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码


2 个回复

倒序浏览
老师说推荐使用block类型处理问题。。好像也不是很多人用。。
回复 使用道具 举报
弹琴骚年 发表于 2014-10-23 23:54
老师说推荐使用block类型处理问题。。好像也不是很多人用。。

还没学到要用block的地方,视频里讲UI很多用block吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马