OC block的简单使用
http://blog.csdn.net/itpeng523/article/details/23965147
一、先用Xcode创建一个空工程
学习block之前先用弄懂c语言的函数指针
看代码:
typedef int (^SumP)(int,int);//用typedef定义一个block类型
void test()
{
printf("调用了test函数\n");
}
int sum(int a,int b)
{
return a+b;
}
int main(int argc,constchar * argv[])
{
void (*p)();//这是一个函数指针 能够指向一个返回值为void 没有形参的函数
//(*p)是固定写法,代表指针变量p将来肯定指向函数
//左边的void:指针变量p指向的函数没有返回值
//右边():指针变量p指向的函数没有形参
p = test;//指针变量p指向test函数
//利用指针变量间接调用取出函数
(*p)();
//也可以
p();
int(*xp)(int,int);//定义一个指向函数的指针返回值是int 函数的参数是int int
xp =sum;
int c = (*xp)(1,2);
printf("c is %d\n",c);
//下面来学习block
/*
作用:
Block封装了一段代码,可以在任何时候执行
Block可以作为函数参数或者函数的返回值,而本身又可以带输入参数或返回值
block,在多线程、异步任务,集合遍历,集合排序、动画专场用得多
*/
//block用来保存一段代码
//block的标志 :^
//block跟函数指针很像
//定义block变量没有返回值没有参数
void(^myblock)() = ^ {
NSLog(@"---------");
NSLog(@"---------");
};
//利用block变量调用block内部的代码
myblock(); //运行block
//定以一个block返回值为int函数的参数为int int
int(^sumblock)(int ,int ) = ^(int a,int b){
return a + b;
};
int sum = sumblock(10,11);
NSLog(@"sum = %d",sum);
//利用typedef定义block来创建一个block变量
SumP sumblock1 = ^(int a,int b){
return a - b;
};
int d = sumblock1(10,5);
NSLog(@"d = %d",d);
return 0;
}
打印:
调用了test函数
调用了test函数
c is 3
2014-04-17 23:02:30.926 block的简单使用[530:303] ---------
2014-04-17 23:02:30.931 block的简单使用[530:303] ---------
2014-04-17 23:02:30.932 block的简单使用[530:303] sum = 21
2014-04-17 23:02:30.932 block的简单使用[530:303] d = 5
Program ended with exit code: 0
OC block的简单使用的更多相关文章
- 关于Block的简单使用
Block在整个iOS开发中无所不见,很重要,很重要,文本在这里block的简单使用介绍.我们可以简单地定义.使用block. 1. Block和C的指针函数很像,但比C的函数灵活多了.废话了.... ...
- iOS - OC Block 代码块
前言 Block 是一段预先准备好的代码,可以在需要的时候执行,可以当作参数传递.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.Block 是 C 语言的,类似于一个 ...
- Objective-C学习笔记(四)——OC实现最简单的数学运算
本篇帖子会实现使用OC的最简单的加减乘除运算.学习的知识点包含变量定义.运算方法,格式化输出等概念.主要学习主要的语法,事实上和C语言的语法还是比較相似的. 具体代码仅仅要写在main方法中即可了.具 ...
- 最直接的教你OC中Block的简单使用场景
场景一: A控制器跳转到B控制器 -- B控制器事件处理通过Block回调给A控制器 A 跳转前界面如下 点击ToB按钮到控制器B 在控制器B中点击按钮返回到A界面如下 ...
- Swift3.0 函数闭包与OC Block
刚接触Swift,如有不对的点,欢迎指正.转载请说明出处 定义一个基本函数 //定义一个函数,接收一个字符串,返回一个String类型的值 func test(name:String) -> S ...
- Block的简单使用
代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数,并得到返回值. 代码块本质上是变量,只不过它存储的数据是一个函数体,因此名字 ...
- Block很简单,就像delegate的简化版
代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙完成一件事情,为什么要委托别人来做呢,这其实是MVC设计模式中的模块分工问题,例如View对象它只负责显示界 ...
- OC Block网上转载
1.block是一个特殊的OC对象, 它建立在栈上, 而不是堆上, 这么做一个是为性能考虑,还有就是方便访问局部变量. 2.默认情况下block使用到的局部变量都会被复制,而不是保留.所以它无法改变局 ...
- iOS Block的简单使用以及__block 和static修饰变量
简单的代码总结,不足之处多多指教. //简单的使用 -(void)blockOne{ ; int(^BlockOne)(int) = ^(int num2) { return number*num2; ...
随机推荐
- 安卓、swiper标准的文字滚动
溢出滚动基本原理还是relative,absolute. 核心高度 swiper-wrapper 和gun-swiper-slide 的自适应高度成为关键 <style> .gun-s ...
- python中os/sys/platform模块区别
os:This module provides a portable way of using operating system dependent functionality. sys:This m ...
- [CentOS]添加删除用户
摘要 在安装CentOS的时候,我们只设置了root,类似windows的超级管理员.当然我们在工作的时候,为了安全考虑,不可能对外开发root,一方面是从安全的角度,另一方面也是方便管理. 添加删除 ...
- 解决redhat的未注册问题
昨天安装第五步的时候:开始是没有网,,,居然ping不通 网 ,服务器也ping不通,,,,,可能和我前几天删除了网络适配器有关,,把linux桥接对应的适配器给删了,,, 解决办法是打开虚拟网络 ...
- C#数字格式化
格式规范的完整形式:{index [,width][:formatstring]} index是此格式程序引用的格式字符串之后的参数,从零开始计数:width(可选) 是要设置格式的字段的宽度,wid ...
- thinkphp的url地址区分大小写?
在默认情况下: 在访问url地址的时候, 其中的 Action类名 即: 模块名称 是区分大小写的. (只有模块名, 即控制器名称) 可以根据设置 'URL_CASE_INSENSITIVE' =&g ...
- spring缓存Ehcache(入门2)源码解读
Ehcache缓存: 解读: Ehcache缓存是在继承spring缓存核心类CacheManager的基础上实现的. 常用类: EhCacheCacheManager:继承自CacheManager ...
- 将json返回的日期格式转换
<script> function ChangeDateFormat(cellval) { var date = new Date(parseInt ...
- linux之vim编辑神器
设置编辑器:export EDITOR=vim 1.ctrl+x ctrl+e 创建vim临时文件 2.ctrl+[ 退回到命令模式 3.命令模式下ZZ,保存退出 4.大写I行首插入,大写A行尾插入 ...
- Redis学习笔记七:独立功能之排序
sort 命令可以对列表键.集合键或有序集合键的值进行排序.sort 命令并不修改数据库值,只是输出有序. 127.0.0.1:6379> rpush numbers 9 8 7 6 1 2 3 ...