iOS 开发之Block
iOS 开发之Block
一:什么是Block。Block的作用
UI开发和网络常见功能的实现回调,按钮事件的处理方法是回调方法。
1. 按钮事件 target action 机制。 它是将一个方法传入到一个按钮中
2. 试图表格,它里面有很多的事件机制 它是将一个self指针传入,实现回调机制中得方法。
3. Block 解决回调,理解为C语言中得函数,定义方法在里面
二:Block的基本使用
1. 定义Block变量
在这里只是简单的定义了带两个整形参数的Block变量
int (^add) (int x,int y)
2. 定义Block语句块
这是一个简单的代码块语句,在代码块语句的前面一定要加^符号
^int (int x,int y)
{
return x+y;
};
其实如果仔细看的话,在代码块的前面不加^符号的话,它很像C语言中的函数。
我们把代码块语句用一个代码块变量来接收了写成下面的格式
add=^int (int x,int y)
{
return x+y;
};
左后既然你创建了函数的话,你想实现它的话就得调用函数,有参数的就得传参数进去。
NSLog(@"%d", add(,));
这样我们就实现了简单的一个两数之和的计算
三: Block在开发中的应用
block变量的反向界面传值
首先一点就是,代码块的传递是通过方法进行的,所以在进行反向的界面传值的时候,你的把它写到方法里面传过去。
如果你了解反向传值的话,以前是通过代理来传值的。
我们把用Block变量反向传值和代理反向传值的过程做一个大概的比较,你就知道它的方便和好的地方了。
代理的大概过程;
1. 在第二个界面创建协议,代理。
2. 第一个界面遵守协议,遵守了代理的话就得实现它里面的方法
3. 实现协议的方法
4. 在第一界面里面在你要跳转到第二界面的地方指定代理者。
5. 最后你的在第二个界面去调用代理
Block变量的大概过程;
1. 在第二个界面里面写一个方法,把你要传递的值通过代码块的形式,写到方法的形参中去。
2. 在第一个界面跳到第二个界面时候,你创建了第二个界面的时候你就可以用你创建的第二个界面去调用你写的那个方法。
其实你一调用就已经把值传过来了,你就可以使用它了。
iOS 开发之Block的更多相关文章
- 李洪强iOS开发之Block和协议
李洪强iOS开发之Block和协议 OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任 ...
- iOS开发之Block
1.定义 (1) Block是OC中的一种数据类型,在iOS开发中被广泛使用 (2) ^是Block的特有标记 (3) Block的实现代码包含在{}之间 (4) 大多情况下,以内联inline函数的 ...
- IOS开发之block应用
非常长时间都是在学习各位大神的力作,并汲取了不少养料,在此一并谢过各位大神了. 当然了.好东西是要跟大家一起分享的,近期发现了几个很不错的个人网站,都是介绍IOS开发的.当中有唐巧.破船之长.池建强. ...
- ios开发之block的使用,及注意事项
转自:http://my.oschina.net/u/1432769/blog/390401 Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事.需要注意的是由于 ...
- iOS开发之block解析
1. block的本质是一个Objective-C的对象,为什么这么说? 在Objective-C中,runtime会在执行时依据对象的isa指针的指向,来度额定这个对象的类型,也能够觉得一个对象,它 ...
- iOS 开发之 GCD 不同场景使用
header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em} .markdown-body{overflow:hidden} .markdo ...
- iOS 开发之 GCD 基础
header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em} .markdown-body{overflow:hidden} .markdo ...
- iOS开发之MVVM在项目中的应用
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- 李洪强iOS开发之RunLoop的原理和核心机制
李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研 ...
随机推荐
- JSON-lib框架,转换JSON、XML不再困难
Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象. 一. 准备工作 ...
- LPC1788的内部EEPROM使用
Lpc1788内置有eeprom 使用代码 #ifndef __E2PRONINCHIP_H_ #define __E2PROMINCHIP_H #include "common.h&quo ...
- MapReduce 简单的全文搜索
上一个已经实现了反向索引,那么为什么不尝试下全文搜索呢.例如有了 Hello file3.txt:1; MapReduce file3.txt:2;fil1.txt:1;fil2.tx ...
- onchange、oninput、onpropertyChange事件的异同
onchange事件适用于input\textarea\select元素上,支持各大浏览器,该事件只有在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效: oninput事件适用于inpu ...
- 【转】国外程序员收集整理的PHP资源大全
ziadoz在 Github发起维护的一个PHP资源列表,内容包括:库.框架.模板.安全.代码分析.日志.第三方库.配置工具.Web 工具.书籍.电子书.经典博文等等.伯乐在线对该资源列表进行了翻译, ...
- iOS动画特效 分类: ios技术 2015-05-15 16:29 311人阅读 评论(0) 收藏
关于图层的几个坐标系. 对于ios来说,坐标系的(0,0)点在左上角,就是越往下,Y值越大.越往右,X值越大. 一个图层的frame,它是position,bounds,anchorPoint和tra ...
- java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoolConfig
问题描述: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with n ...
- Java 汉子转拼音
1. 引入: pinyin4j-1.1.0 包; http://pan.baidu.com/s/1eQ8a874 2. 转换; private static String ChineseToPiny ...
- cookie设置
问题: cookie设置好后,谷歌浏览器下-->只有本页面有值,但是在其它浏览器下正常. $.cookie("userName",$("#loginName&quo ...
- mongodb 查询时没有索引报错(too much data for sort() with no index)
报错信息: .... too much data for sort() with no index.... 给对应排序字段加索引就OK 了... 在对应"表"名上,右键--> ...