暂时对这个有了一些粗浅的理解,记下来一边后面学习时学习,改正。

先举个例子:

A类:

.h文件:

@interface A  : NSObject

- (void)Paly1:(void (^)(double salary))game1

Paly2:(void (^)(double salary))game2;

A类:

.m文件:

- (void)Paly1:(void (^)(double salary))game1

Paly2:(void (^)(double salary))game2{

double zsalary;

scanf("%lf",&zsalary);

if(zsalary>5000){

Play1(zsalary);

}else{

Play2(zsalary);

}

}

@end;

B 类:

.h文件:

@interface B :NSObject

- (void)Play;

@end;

.m 文件:

@implementation B

- (void)Play{

A *a = [A new];

[a Play1:^(double salary)game1{

NSLog(" 超过5000了,玩game1去!");

} Play2:^(doule salary)game2{

NSLog(" 靠,还没有5000,只能玩game2了!");
           }];

}

@end;

通过Block可以实现回调,也常说成委托。当程序运行时,虽然B类的函数调用类A类的含Block的函数,但B类并没有真正的权利去调用这个Block,只能调用A,真正由权利去调用Blocks的是A类定义的函数,这是通过这个函数在A类中定义的语句来判断具体进入哪个Block中。通过这个就是回调,委托。

具体的详细解说参见(牛人博客):http://www.cnblogs.com/ygm900/p/3633131.html

转载于:https://www.cnblogs.com/chaiwentao/p/3993135.html

Object—C 块在函数中作为参数时的分析相关推荐

  1. libvlc_media_add_option 函数中的参数设置

    libvlc_media_add_option   函数中的参数设置 Usage: vlc [options] [stream] ... You can specify multiple stream ...

  2. 在setInterval函数中传递参数

    本文翻译自:Pass parameters in setInterval function Please advise how to pass parameters into a function c ...

  3. python函数中可变参数的传递方式是_Python中函数的参数传递与可变长参数

    1.Python中也有像C++一样的默认缺省函数 1 def foo(text,num=0):2 printtext,num3 4 foo("asd") #asd 0 5 foo( ...

  4. [SpringBoot2]ajax函数中data参数的数据设置方式

    ajax函数中data参数的数据设置方式:

  5. listen函数的第二个参数_signal(SIGPIPE,?SIG_IGN)listen函数中backlog参数分析

    signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端 ...

  6. Pytorch中tensor维度和torch.max()函数中dim参数的理解

    Pytorch中tensor维度和torch.max()函数中dim参数的理解 维度 参考了 https://blog.csdn.net/qq_41375609/article/details/106 ...

  7. 以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值。

    以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值: Sub Example()Dim x As Integer, y As Integerx ...

  8. 函数中out参数的应用

    函数中out参数的应用 1.out参数使用情况说明 如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组: 但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可 ...

  9. 解决JS在url中传递参数时参数包含中文乱码的问题

    解决JS在url中传递参数时参数包含中文乱码的问题 参考文章: (1)解决JS在url中传递参数时参数包含中文乱码的问题 (2)https://www.cnblogs.com/xushengguan/ ...

最新文章

  1. 天池NLP中文预训练模型赛来了!
  2. 物联网是地产行业转型的有力推手
  3. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★
  4. NewLife.Net——管道处理器解决粘包
  5. 最常用的决策树算法(二)Random Forest、Adaboost、GBDT 算法
  6. 红旗河最早设计计算机的目的,论红旗河的利弊及其替代方案
  7. akka和rabbitmq_Akka Notes –演员记录和测试
  8. OpenGL ES 2.0 Shader相关介绍
  9. KB/MB/GB/TB之间的换算是乘以1000还是1024?
  10. 孔浩用的mysql工具_springmvc 孔浩 hibernate
  11. 终极算法:机器学习和人工智能如何重塑世界笔记
  12. ubuntu18.04安装lua5.3.6和luarocks3.8
  13. 用批处理的方式解压文件
  14. linux link 硬链接,Linux系统中的硬链接(hard link)与软链接(symbolic link)
  15. BZOJ1864: [Zjoi2006]三色二叉树
  16. (经典)tcp粘包分析
  17. Windows运行.sh文件方法
  18. 华中师范大学计算机考研资料汇总
  19. IF 19.865代谢组学高分文章,非靶标代谢流助力揭示18SrRNA中m6A控制肝癌机制!
  20. anki 中使用 u,m 键上下滑动页面

热门文章

  1. 聊聊“管理+IT”中管理的几个含义
  2. JAVA:响应式编程
  3. Fastadmin 配置
  4. Android客制化-恢复出厂设置但保留文件
  5. 网商银行大前端信息科技移动渠道部 2024届校招实习
  6. xmanager远程Qt键盘错位或者重复输入问题
  7. github收不到短信怎么办
  8. 关于Java工程师面试-自我介绍篇
  9. linux centos 如何查看操作系统版本信息?
  10. win10共享计算机win7,win7和win10共享文件怎么设置小方法