关于Block的简单使用
Block在整个iOS开发中无所不见,很重要,很重要,文本在这里block的简单使用介绍。我们可以简单地定义、使用block。
1. Block和C的指针函数很像,但比C的函数灵活多了。废话了。。。。
例子比较:
//C函数
int funSum(int a, int b) {
return a + b;
} int main(int argc, const char * argv[]) {
@autoreleasepool { //定义了pointSum这种指针类型, 这种指针类型指向函数
typedef int (*pointSum) (int, int); //定义了一个指针变量ps, 赋值funSum
pointSum ps = funSum; //C函数调用
int a = ps(, ); // (*ps)(12, 23);
NSLog(@"a = %i", a);
}
return ;
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
//定义了blockSum这种block的类型,注blockSum为类型名
typedef int (^blockSum) (int, int);
//定义了一个blockSum类型的block变量bs 并为其赋值block块内容
blockSum bs = ^(int a, int b) {
return a + b;
};
int a = bs(, );
NSLog(@"a = %i", a);
}
return ;
}
2. Block定义及使用
void BlockDemo() {
//声明 一个名为blockSum返回值为int类型,接受两个int、int类型的参数的Block, 也可以写成这样 int (^blockSum) (int a, int b);
int (^blockSum) (int, int);
//赋值 (这个名为blockSum的代码段所要做的事情)
blockSum = ^(int a, int b) {
return a + b;
};
//调用这个block赋值给变量a
int a = blockSum(, );
NSLog(@"a=%i", a); //a = 4
}
typedef int (^blockSum) (int, int); //typedef修饰的block类型,这种类型可以定义任意多,我们在开发中它来定义block很常见
void blockDome() {
//int c =100000000;
__block int c =; //此处是两个"_"
blockSum bs = ^(int a, int b){
a = ; //block代码快可以访问局不变量,但不能修改局不变量的值, 若要修改必须在定义该变量前加__block修饰
c = a + b;
return a + b;
}; NSLog(@"block修改前:c = %i", c);
bs(, )
NSLog(@"block修改后:c = %i", c);
}
关于Block的简单使用的更多相关文章
- OC block的简单使用
http://blog.csdn.net/itpeng523/article/details/23965147 一.先用Xcode创建一个空工程 学习block之前先用弄懂c语言的函数指针 看代码: ...
- Block的简单使用
代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数,并得到返回值. 代码块本质上是变量,只不过它存储的数据是一个函数体,因此名字 ...
- Block很简单,就像delegate的简化版
代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙完成一件事情,为什么要委托别人来做呢,这其实是MVC设计模式中的模块分工问题,例如View对象它只负责显示界 ...
- 最直接的教你OC中Block的简单使用场景
场景一: A控制器跳转到B控制器 -- B控制器事件处理通过Block回调给A控制器 A 跳转前界面如下 点击ToB按钮到控制器B 在控制器B中点击按钮返回到A界面如下 ...
- iOS Block的简单使用以及__block 和static修饰变量
简单的代码总结,不足之处多多指教. //简单的使用 -(void)blockOne{ ; int(^BlockOne)(int) = ^(int num2) { return number*num2; ...
- iOS - Block的简单使用
Block 的使用有两种: .独立Block .内联Block <一>独立Block 使用方式 一.定义一个Block Object,并调用. 1.定义 // 定义一个Bl ...
- block的简单使用:点击按钮在另一个控制器内调用block内的代码
1.自定义一个继承于UIButton的按钮 2.声明block: 返回值类型 函数名 参数列表 typedef void (^ButtonBlock)(UIButton *); @interfa ...
- sonar阻断级别错误(block)简单汇总
1.代码里面包含PASSWORD.PWD 'PWD' detected in this expression, review this potentially hardcoded credential ...
- 实现下拉弹出视图和Block的简单实现
实现效果如下: 实现代码如下: @interface ViewController ()<UIViewControllerTransitioningDelegate> { UILabel ...
随机推荐
- ubuntu 14.04 配置tomacat8
自己在虚拟机总安装tomcat8,主机访问,记下步骤方便以后查看. 1.将tomcat8安装包移动到/usr/local目录中(个人喜欢把自己安装的软件放到/usr/local文件夹中) 2.解压缩, ...
- cg数据类型
Cg 支持7 种基本的数据类型:1. float,32 位浮点数据,一个符号位.浮点数据类型被所有的profile 支持(但是DirectX8 pixel profiles 在一些操作中降低了浮点数的 ...
- Entity Framework关于SQL注入安全问题
1.EF生成的sql语句,用 parameter 进行传值,所以不会有sql注入问题 2.EF下有涉及外部输入参数传值的,禁止使用EF直接执行sql命令方式,使用实体 SQL 参考: https: ...
- CSS中一些常见的兼容性问题
CSS中一些兼容性问题就是浏览器兼容,而这些浏览器兼容问题主要是Ie和FF之间的争斗. CSS hack中的一些事: 我们为了让页面形成统一的效果,要针对不同的浏览器或不同版本写出对应可解析的CSS样 ...
- [LeetCode] Flip Game 翻转游戏
You are playing the following Flip Game with your friend: Given a string that contains only these tw ...
- EF使用CodeFirst方式生成数据库&技巧经验
前言 EF已经发布很久了,也有越来越多的人在使用EF.如果你已经能够非常熟练的使用EF的功能,那么就不需要看了.本文意在将自己使用EF的方式记录下来备忘,也是为了给刚刚入门的同学一些指导.看完此文,你 ...
- js实现可拖动Div
随着时代的变化,越来越感觉到js的重要性,js不仅可以做web页面(如Ext框架),还可以做一些web的特效,这些特效不仅兼容PC,而且兼容手机端,毕竟是基于浏览器的,和平台没关系.现在微软的wind ...
- JavaScript的基本语法
1.脚本的基本结构如下: <script language="JavaScript"> <!--JavaScript语句:--> </script&g ...
- JavaScript值类型与执行环境和垃圾处理机制
JavaScript变量分为基本值类型和引用值类型,基本值类型就是以下这五种:Boolean,Number,String,Null,Undefined.基本值类型和引用值类型具有以下特点: 1.基本值 ...
- ORB-SLAM(五)优化
ORB-SLAM作为单目SLAM,其精度很大程度上决定于帧与帧之间的位姿优化的是否准确.因此优化(optimization)在ORB-SLAM里面扮演了很重要的角色.这一小节探讨一下ORB-SLAM里 ...