`

IOS中使用Block的好处

阅读更多

经过今天的Block的学习、上网查询相关文章归纳了一下

一、一个使用Block的好处有:

  1. Block可以用在许多不同的环境中,这样可以让代码更加简单,以及减少函数声明的数量,不用实现代理协议。
  • 简单性:使用 Block 我们可以不写任何附加的代码就可以访问对象,对象在数组中的索引,stop 变量。 这意味着少量的代码,减少了发生编码错误的机会(当然,并非我们一定会出现编码错误)。
  • 速度:使用 Block 在执行速度上要比使用快速枚举快。 在我们这个例子中,这点微小的速度提升不值得一提,但是在更复杂的情况下,这个优势就越来越重要。
  • 更简单的代码:使用 Block, 我们不再需要单独定义一个回调方法,保持代码在一起。使用 Block, 我们不再需要在一个地方开启动画,然后再另外一个地方处理回调。 所有和我们动画相关的代码都在一处,这样让他的可读性和维护性更强。
  1. 适用作工作单元,通常用来做并发任务、遍历、排序、以及回调。 

关于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使用总结

    总的来说,Block是iOS开发中的重要工具,熟练掌握其使用能够提升代码的可读性和可维护性。通过上述知识点,我们可以更深入地理解Block的工作原理,并有效地利用它来编写更加简洁高效的代码。在实际项目中,尤其是...

    iOS Block使用教程

    在iOS开发中,Block是一种强大的编程工具,它允许我们在代码中定义匿名函数或者闭包,使得函数能够作为参数传递,也可以直接在其他函数内部定义和使用。熟练掌握Block的使用对于提升iOS应用的代码质量、可读性和效率...

    ios-把block当成属性放在全局字典中的用例.zip

    在iOS开发中,Block是一种强大的语法特性,它允许我们在代码中定义匿名函数或者闭包,可以作为参数传递、返回值,甚至可以作为属性存储。在这个“ios-把block当成属性放在全局字典中的用例.zip”示例中,开发者创建...

    ios 视图间Block传值

    Block是苹果在Cocoa Touch框架中引入的一种强大的闭包特性,它可以捕获和存储其定义范围内的局部变量,并可以在其他地方使用。Block可以作为函数参数,也可以返回Block。在iOS开发中,Block被广泛用于处理异步操作,...

    ios中block的应用

    该文档简单的介绍了ios下block是的使用方法和一些小技巧

    ios-block 回调.zip

    "ios-block 回调.zip"中的"CallbackDemo"很可能是展示了一个关于如何在iOS应用中使用Block进行回调的实例。 Block的基本结构由`^`符号开启,后面跟着返回类型(如果有的话),接着是参数列表,最后用`{}`包裹实现的...

    iOS Block 的使用, 包括传值, 基本用法

    在iOS开发中,Block是一种强大的编程工具,它允许我们在代码中定义可嵌套的匿名函数。Block不仅可以简化复杂的代码结构,还可以实现回调机制,使得异步操作变得简单易懂。本篇文章将深入探讨iOS Block的基本用法以及...

    iOS Block 界面传值

    在iOS开发中,Block是一种强大的特性,用于定义代码块或者说是可重用的代码段,可以作为参数传递,也可以作为返回值。它在界面传值和处理事件响应方面发挥着重要作用。本文将深入探讨iOS Block的基本使用,以及如何...

    iOS的block回调

    在iOS开发中,我们经常使用Block作为回调机制,特别是在处理网络请求、动画效果或异步任务时。比如,当我们使用`NSURLSession`进行网络请求时,可以设定一个completion handler(完成处理器),这是一个Block,当...

    IOS Block的使用

    接下来,我们将详细讨论如何在iOS中使用Block,包括作为局部变量、属性以及函数参数的用法。 1. **Block作为局部变量** 在函数或方法内部,我们可以声明并定义一个Block,将其作为局部变量。Block的定义通常以`^`...

    IOS block回调代码实例Demo

    总之,"IOS block回调代码实例Demo"是一个很好的学习资源,它展示了如何在iOS应用中使用Block进行回调,这对于理解和掌握iOS开发中的异步编程至关重要。通过深入研究这个Demo,开发者可以更好地运用Block来优化代码...

    ios-block 多参数传值.zip

    但是栈上的Block不能被其他线程访问,也不能在异步操作中使用。 2. **堆存储(Heap Block)**:如果Block引用了外部对象,编译器会将其存储在堆上,并且需要手动管理内存(使用`copy`属性或者`__strong`关键字)。...

    ios-block反向传值.zip

    在iOS开发中,Block是一种强大的编程工具,它允许我们在代码中定义可执行的代码块,类似于函数,但可以在需要的地方直接使用,甚至可以作为参数传递。"ios-block反向传值.zip"这个压缩包文件主要关注的是如何利用...

    ios-使用block和runtime对button的封装.zip

    UIButton类在使用时需要一行行的来设置属性,代码过于冗余。每个点击事件都要创建一个方法,不利于阅读。最新代码地址:https://github.com/Maricle1/ControlsPackage.git

    ios-block作为对象属性和返回值的展示方式.zip

    在iOS开发中,Block是一种强大的编程工具,它允许我们在代码中定义可执行的代码块,类似于函数,但可以在运行时动态地使用。本教程将深入探讨如何将Block用作对象属性以及作为返回值来增强代码的灵活性和可读性。 ...

    ios Block和代理的对比

    在iOS开发中,Block和代理是两种常用的回调机制,它们都可以用来实现对象间的通信,但具体用法和特性有所差异。下面将详细讲解Block和代理的对比,以及它们各自的应用场景。 首先,Block是一种内联函数,它可以捕获...

    ios-跨页面传值 block传值.zip

    在这里,我们将详细探讨Block在iOS开发中的应用以及如何用它来实现跨页面的数据共享。 首先,理解Block是什么至关重要。Block是Objective-C(以及后来的Swift)中的一个特性,它允许我们在代码中定义匿名函数,即...

    iOS block基础使用

    本文将深入探讨如何在iOS中使用Block。 ### 一、Block定义 Block 是一种匿名函数,可以在代码中定义,无需预先声明。Block 的基本语法如下: ```objc ^return_type (parameter_list) { // Block 体 } ``` 例如...

    ios-block逆传值页面间的.zip

    在这个名为"ios-block逆传值页面间的.zip"的资源中,我们主要关注的是如何使用Block来实现页面间的反向传值。Block是Objective-C和Swift中的一种强大的特性,它可以作为参数传递,也可以作为返回值。对于初学者来说...

    iOS进阶 - Block底层原理

    ### iOS进阶 - Block底层原理 #### 一、Block的本质 **1. Block作为一个OC对象:** - **ISA指针:** Block本质上是Objective-C中的一个对象,它内部有一个`isa`指针,用于指向Block类的元类,这与普通的OC对象是...

Global site tag (gtag.js) - Google Analytics