关于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 ...
随机推荐
- 约瑟夫问题(java实现)
方法一.自定义的链表实现 package com.code.yuesefu; public class YueSeFuList { public static void main(String[] a ...
- CSS中一些常见的兼容性问题
CSS中一些兼容性问题就是浏览器兼容,而这些浏览器兼容问题主要是Ie和FF之间的争斗. CSS hack中的一些事: 我们为了让页面形成统一的效果,要针对不同的浏览器或不同版本写出对应可解析的CSS样 ...
- CentOS系统yum源使用报错:Error: Cannot retrieve repository metadata (repomd.xml) for repository: rpmforge.
服务器上的yum突然不好使用,使用yum的时候报错如下:[root@bastion-IDC src]# yum list......Could not retrieve mirrorlist http ...
- [LeetCode] Closest Binary Search Tree Value 最近的二分搜索树的值
Given a non-empty binary search tree and a target value, find the value in the BST that is closest t ...
- [LeetCode] Factor Combinations 因子组合
Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a func ...
- [LeetCode] Count Primes 质数的个数
Description: Count the number of prime numbers less than a non-negative number, n click to show more ...
- [LeetCode] Maximal Rectangle 最大矩形
Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and ...
- 【转】Windows平台下的Subversion安装配置新手指南
原文地址:http://developer.51cto.com/art/201005/199628.htm 本文介绍Subversion安装配置快速指南,首先讲Subversion的安装和配置,Uni ...
- 开源遥感平台opticks插件开发指南
Opticks是一款开源的遥感数据处理平台,与其同类开源软件OSSIM一样,支持种类丰富的数据文件格式,但其最大特点为设计精巧的插件开发模式,在设计技巧上,系统提供了良好的封装特性,即使插件开发者对框 ...
- vue.js之过渡效果-css
概述 vuejs的过渡效果可以让我们的页面元素在出现和消失时实现过渡.官方文档这样描述过渡效果的方式: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Anima ...