关于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 ...
随机推荐
- 今天搞了一天的CentOS,唉,实在感觉自己渺小啊
从别人处转载一篇文章:http://my.oschina.net/idiotsky/blog/303545 这个文章讲的很好,因为告诉了我怎么去查看ftp有关的SElinux的bool变量值以及设定. ...
- Spring 01基础
一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...
- java工具类
1.HttpUtilsHttp网络工具类,主要包括httpGet.httpPost以及http参数相关方法,以httpGet为例:static HttpResponse httpGet(HttpReq ...
- c# (ENUM)枚举组合类型的谷歌序列化Protobuf
c# (ENUM)枚举组合类型的谷歌序列化Protobuf,必须在序列化/反序列化时加上下面: RuntimeTypeModel.Default[typeof(Alarm)].EnumPassthru ...
- [LeetCode] Perfect Squares 完全平方数
Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...
- [LeetCode] Spiral Matrix II 螺旋矩阵之二
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...
- C语言学习 第九次作业总结
本次作业练习的内容是二维数组.下面我先简单的说下二维数组的基本知识点: 二维数组其实这个中文概念颇有误导--会让人感觉这是一个两个维度的概念.所以很多的国外的C语言书籍上会称这种数组为多下标数组:即首 ...
- vue.js学习(第一课)
学习资料 来自台湾小凡! vue.js是javascript的一个库,只专注于UI层面,核心价值永远是 API的简洁. 第一课: 不支持IE8. 1.声明式渲染: el元素的简称 element : ...
- idea 如何隐藏/展示不想看到的文件
隐藏:在 Ignore files and folders中添加想要过滤的文件或文件夹名称 展示隐藏文件: 在过滤列表中删除掉文件或者文件夹就好了
- 渗透测试-信息收集-c段收集
平时做渗透测试我比较喜欢用lijiejie 写的 subDomainsBrute来爆破子域名 那么爆破完成后就想收集一下网站的c段信息 下面以平安为例 爆破得到子域名为 i.pingan.com.cn ...