经过今天的Block的学习、上网查询相关文章归纳了一下
一、一个使用Block的好处有:
- Block可以用在许多不同的环境中,这样可以让代码更加简单,以及减少函数声明的数量,不用实现代理协议。
- 简单性:使用 Block 我们可以不写任何附加的代码就可以访问对象,对象在数组中的索引,stop 变量。 这意味着少量的代码,减少了发生编码错误的机会(当然,并非我们一定会出现编码错误)。
- 速度:使用 Block 在执行速度上要比使用快速枚举快。 在我们这个例子中,这点微小的速度提升不值得一提,但是在更复杂的情况下,这个优势就越来越重要。
- 更简单的代码:使用 Block, 我们不再需要单独定义一个回调方法,保持代码在一起。使用 Block, 我们不再需要在一个地方开启动画,然后再另外一个地方处理回调。 所有和我们动画相关的代码都在一处,这样让他的可读性和维护性更强。
- 适用作工作单元,通常用来做并发任务、遍历、排序、以及回调。
关于Block的一些使用注意点:
- 一个Block的内部时可以引用自身作用域外的变量的,包括static变量,extern变量或自由变量(定义一个变量的时候,如果不加存储修饰符,默认情况下就是自由变量auto,auto变量保存在stack中的。除了auto之外还存在register,static等存储修饰符),对于自由变量,在Block中只读的。在引入block的同时,还引入了一种特殊的__block关键字变量存储修饰符。
- 代码块本质上与变量一样,都在函数中声明然后使用,只不过一个变量中存储一个值,一个代码块存储一个函数体(一段代码);
- 代码块的定义:有返回值,有参数,有变量名;
- __block关键字 修饰局部变量,使局部变量变得特殊,可以在block代码块中使用:
- 把全局变量和局部变量作为参数传递到一个函数中,这个变量会copy一份传入到函数,函数中做的操作不会影响变量的值(根本就是两个东西)。
- 把全局变量和局部变量作为参数传递到一个代码块中,局部变量必须要__block来修饰,用来告诉编译器这个局部变量有些特殊可以在代码中使用,这些变量在代码块中使用就是本来的变量。
参考资料:
如何在 iOS 5 中使用 Block (1)http://www.raywenderlich.com/zh-hans/18752/%E5%A6%82%E4%BD%95%E5%9C%A8-ios-5-%E4%B8%AD%E4%BD%BF%E7%94%A8-block-1
如何在 iOS 5 中使用 Block (2)http://www.raywenderlich.com/zh-hans/18753/%E5%A6%82%E4%BD%95%E5%9C%A8-ios-5-%E4%B8%AD%E4%BD%BF%E7%94%A8-block-2
相关推荐
iOS block使用总结 可以结合博客http://blog.csdn.net/aiyang10/article/details/49328969理解
iOS的block是学习的难点和重点,熟练使用block可以达到代码的简单高效,特别是在网络的使用过程中。Block demo是一个简单易学的,可以便于学习原理。
该文档简单的介绍了ios下block是的使用方法和一些小技巧
把block当成属性放在单例字典中,可以帮你跨界面,在任意一个地方都可以访问到这个block,之所以上传,是因为看到很多人还在使用代理传值,觉得费时间,这个demo简单易懂,真的好用
如何在iOS中使用Block──How to use Blocks with iOS
iOS Block 的使用, 包括传值, 基本用法
UIButton类在使用时需要一行行的来设置属性,代码过于冗余。每个点击事件都要创建一个方法,不利于阅读。最新代码地址:https://github.com/Maricle1/ControlsPackage.git
iOS Block 的 基本使用 演示 在Controller之间传值 和 传点击相应事件
iphone开发中block的详解.pages
IOS block回调代码实例Demo IOS block 回调 Demo 块
用代码块实现两个不同视图直接的传值问题,用代码块实现起来比协议更方面。
介绍一个自定义的UIButton控件,它可以不再使用 - (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;方法来触发按钮的动作,而改成用一个block的方式来...
源码github.com/pro648/BasicDemos-iOS/tree/master/Block 块是一个独立的代码片段,始终存在于另一个编程结构的范围内,如在一个方法的主体。块可以捕获块外变量的值,但外部对于块内发生的事情一无所知。...
iOS 常用block 传值
iOS底层原理进阶,从底层原理和本质详细解析block的使用
iOS学习——block深入浅出博文中的代码 博文地址:http://blog.csdn.net/u010127917/article/details/49946527
翻译的Pro Multithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks中的block章节
一个block回调的例子
已经拥有一年经验的你真的了解Block 代理方法吗?也许不!以前我以为自己都有上架项目,这都是太基础的东西,但今天我重新回头看了以前做的笔记,真的是书读百遍,其义自见。
主要给大家介绍了关于IOS中block为何再也不需要WeakSelf弱引用的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。