iOS block代码块基本使用

作者: 予独爱秋天的梅花 | 来源:发表于2016-09-10 16:43 被阅读132次

一.block简介

1.block是一段代码块,是对c语言的拓展,用来封装或者存储代码,与函数类似,可以在需要的时候需要的文件中调用

2.block分为有参数有返回值,有参数无返回值,无参数有返回值,无参数无返回值.

block的声明格式:

//无参数无返回值

无参无返回值 另外三种类型的block

有参数的block可以有多个参数,参数之间使用“,”隔开。

此时run程序会发现并不会有打印结果,必须要调用之后才能执行block的代码块

block的调用

block的调用 打印结果

3.在block内部可以访问外部变量,默认情况下不可以修改此外部变量的值:

此时修改age会报错

如果想要在block内部修改外部变量需要用__block修饰外部变量

输出分别是24、42

4.利用类型定义定义block,这样可以写起来更简单、方便

类型定义 使用

二.block使用场景

1.block属性,可以在类之间传递一段代码并实现回调功能

新建一个Person类并声明一个block类型的属性

可以在Person的init方法中或者viewcontroller类中给这个block封装一段代码,然后调用。

本文在viewcontroller类中封装,在Person中可以实现调用,就起到了类和类之间传递信息的作用

viewcontroller中封装的代码

2.block可以作方法的参数,AFNetworking库中的请求方法中一般都有block的参数,本文中将给Person类添加一个带有block参数的方法

带block参数的方法

然后在viewcontroller中就可以调用此方法,并将参数code传递到viewcontroller中,在viewcontroller中就可以利用code做需要做的事情,实现了事件和值的传递

调用方法并传值

3.block可以作为方法的返回值

本文中将给Person类添加一个返回值为block类型的方法

返回值为block的方法

在viewcontroller中可以声明一个block去接收这个返回值,也可以直接使用这个返回值,并传递参数给这个block

方法调用

三、对block的相关总结

1.block可以用来进行事件或值的传递,是一种回调机制,是一种苹果推荐的类型,效率高。

2.使用block会引起循环引用,引起循环引用的根源是block和object的互相强引用、谁也释放不了谁,例如在使用ASI进行网络请求时,request强引用competionBlock,而在competionBlock中又使用了request,对request也进行了强引用,这样就会造成循环引用。

retain cycle

解决循环引用的办法是使用弱引用打断retain cycle,使用__block修饰request

解决retain cycle

request被持有者释放后。request 的retainCount变成0,request被dealloc,request释放持有的Block,导致Block的retainCount变成0,也被销毁。这样这两个对象内存都被回收。

相关文章

  • iOS block的使用

    block的使用 Block 又称为“块” 或 “代码块”,作用是用来保存代码。block基本格式: 1、使用ty...

  • iOS block代码块基本使用

    一.block简介 1.block是一段代码块,是对c语言的拓展,用来封装或者存储代码,与函数类似,可以在需要的时...

  • 一篇文章看懂iOS代码块Block

    一篇文章看懂iOS代码块Block 一篇文章看懂iOS代码块Block

  • Block的基本使用

    1.Block代码块的基本使用 Block的作用Block主要用来保存一段代码Block可以封装一段代码,这段代码...

  • iOS-Block的详解

    学习Block的感悟 一. iOS代码块Block 1.1 概述 代码块Block是苹果在iOS4开始引入的对C语...

  • Block

    block.png iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实...

  • Block的精讲

    一: iOS Block的基本概念 1.1 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实...

  • iOS Block存储域及循环引用

    系列文章:iOS Block概念、语法及基本使用iOS Block实现原理iOS Block __block说明符...

  • iOS Block实现原理

    系列文章:iOS Block概念、语法及基本使用iOS Block __block说明符iOS Block存储域及...

  • block的使用浅析

    1 block的基本概念 1.1 block的产生和用途 代码块Block是苹果在iOS4开始引入的对C语言的扩展...

网友评论

    本文标题:iOS block代码块基本使用

    本文链接:https://www.haomeiwen.com/subject/zdvyettx.html