美文网首页
Block用法及原理

Block用法及原理

作者: 你的爱沉坠于我的眸 | 来源:发表于2017-10-18 17:00 被阅读7次

通过一个开红包按钮回传讲解一下简单block的用法

效果图

要实现的功能是通过点击红包,弹出效果图的红包框,点击拆红包回调到控制器 去请求接口获取抢到的金额实现抢红包功能。

在RedPacketView.h中声明一个openPackets的block并实例化(可以传递参数)

RedPacketView.h

在拆红包按钮点击事件中,等待动画执行完毕触发block回调

RedPacketView.m

回调之后在ViewController.m中进行后续逻辑处理

ViewController.m

Block大致分为以下3种,_NSConcreteStackBlock,_NSConcreteMallocBlock,_NSConcreteGlobalBlock。_NSConcreteStackBlock为系统所控制,只用到外部局部变量、成员属性变量,且无强指针引用,返回时即销毁。_NSConcreteMallocBlock是为程序员所控制,有强指针引用,随着强指针引用销毁而销毁。_NSConcreteStackBlock没有用到外界变量或者只用到全局变量、静态变量,应用结束而销毁。

在block中捕获的外部变量分别为四种:全局变量,静态全局变量,静态变量以及自由变量捕获到的前三种都可以在block内部修改值,而自由变量则会报错。其原因是因为自由变量捕获到的只是其值 并没有内存地址。全局变量以及静态全局变量作用域为全局,所以随处都可修改,而捕获静态变量亦可捕获到其内存地址。而且 block只捕获在其内使用的自由变量,未使用的其他自由变量则不会捕获。

所以想要在block内部改变自由变量的值只能传递内存地址到block中或者通过__block改变其储存区方式

相关文章

  • Block用法及原理

    通过一个开红包按钮回传讲解一下简单block的用法 要实现的功能是通过点击红包,弹出效果图的红包框,点击拆红包回调...

  • iOS Block用法及原理

    //Block语法 //^返回值类型(参数列表){表达式} - (void)some{ ^int(int co...

  • iOS中Block的用法,举例,解析与底层原理(这可能是最详细的

    iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)

  • iOS Block用法与实现原理

    最近在看Block原理的时候看了一篇文章iOS Block用法和实现原理,并且对照了《Objective-C高级编...

  • iOS Block __block说明符

    系列文章:iOS Block概念、语法及基本使用iOS Block实现原理iOS Block存储域及循环引用 上一...

  • iOS Block存储域及循环引用

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

  • CSS布局解决方案

    居中布局 水平居中 1)使用inline-block+text-align (1)原理、用法 原理:先将子框由块级...

  • block

    iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)[http://www.cocoa...

  • css布局总结

    居中布局 水平居中 1)使用inline-block+text-align(1)原理、用法 原理:先将子框由块级元...

  • css布局解决方案

    水平居中 1. 使用inline-block + text-align (1) 原理、用法 原理:先将子框由块级元...

网友评论

      本文标题:Block用法及原理

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