浅析block及其实际应用

紧接上次的内容.我们这次来说说block作为类型的使用.就像我上次的说的那样.block是一个对象类型,既然是对象类型当然可以创建实例了.不过咱们今天用宏定义的方法实现一下.

typedef void (^block)(int, int);

解释一下,上面代码的意思就是说生命一个类型为 有两个参数,返回值为空类型的名为block的类型.大致就是这个意思,语文水平可能有点伤,大家读不通的脑部一下文字的顺序这个时候当我们向创建一个变量时候就可以直接用可以实例化对象就行了.

block b;

这个时候b就具有上述bolick一样类型的block变量.我们接下来看一下赋值

b = ^(int a , int b) {
        NSLog(@"%d", a + b);
};
b(1, 2);

我们接下来看一下block做为参数的使用.

- (void)sum:(int (^)(int , int ))sum {
    int a = 10;
    int b = 13;
    NSLog(@"%d", sum(a, b));
}

我们再来看一下调用,调用也是很简单,但是注意我们必须创建一个block变量且对象类型要和参数类型一样.

int (^block)(int a, int b) = ^(int a, int b) {
        return a + b;
};
[class sum:block ];

block的用法大致就已经说完.但是请大家一定要注意,block虽然很方便,切记不能滥用.
参考:
iOS开发进阶 p190-p192 唐巧
http://rypress.com/tutorials/objective-c/blocks
Google 写的时候读了好几篇,但是大部分都是自己实际写代码的感受所得.贴上两个认为比较不错的.大家自行阅读吧.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 因为作者也是最近才对block来电,所以理解可能会有些偏差.首先大概说一下block是个什么东西.block就像是...
    coder_那一抹刚吹过的风阅读 282评论 1 1
  • 《Objective-C高级编程》这本书就讲了三个东西:自动引用计数、block、GCD,偏向于从原理上对这些内容...
    WeiHing阅读 10,156评论 10 69
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,063评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,135评论 18 399
  • 前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这...
    小人不才阅读 3,901评论 0 23

友情链接更多精彩内容