iOS 阶段学习第24天笔记(Block的介绍)
iOS学习(OC语言)知识点整理
一、Block 的介绍
1)概念:
block 是一种数据类型,类似于C语言中没有名字的函数,可以接收参数,也可以返回值与C函数一样被调用
封装一段代码 可以在任何地方调用 block 也可以作为函数参数,以及函数返回值
2)Block 实例代码
//定义了一个block类型MyBlock,MyBlock类型的变量只能指向带两个int的参数和返回int的代码块
typedef int (^MyBlock)(int,int);
//定义一个函数指针
int (*pMath)(int ,int); int add(int a,int b)
{
return a+b;
} int sub(int a,int b)
{
return a-b;
} int main(int argc, const char * argv[]) {
@autoreleasepool {
pMath = add;//指向函数指针
//NSLog(@"sum: %d",pMath(2,3));
pMath = sub; //定义了一个block,block只能指向带2个int的参数,返回int的代码块
//以^开始的为代码块,后面()是参数,然后{}代码块
int (^bloke1)(int,int) = ^(int a,int b){
return a+b;
}; int s = bloke1(,);
NSLog(@"s:%d",s);
//定义一个block指向没有参数没有返回值的代码块(没有参数,void可以省略)
void (^block2)(void) = ^{
NSLog(@"programing is fun!");
};
block2();
int (^block3)(int,int) = ^(int a,int b ){
return a-b; }; //定义了MyBlock类型的变量,赋值代码块
MyBlock block4 = ^(int a,int b){
return a*b;
}; NSLog(@"%d",block4(,)); int c = ;
__block int d = ;
//block块可以访问块外的变量但是不能修改,如果需要修改,变量前加上__block修饰
void (^block5)(void) = ^{
d = d+;
NSLog(@"c:%d,d:%d",c,d);
};
block5();
}
return ;
}
3)解决Block互为强引用时的警告的方法 例如:
UIImageView *imgv = [[UIImageView alloc]initWithFrame:CGRectMake(, , , )];
[self.view addSubview:imgv]; //使用 __unsafe_unretained 重新定义对象 解决互为强引用的问题
__unsafe_unretained UIImageView *weakImagev = imgv;
[imgv setImageWithURL:[NSURL URLWithString:@"http://xxx/xxx.jpg?570x300_120"] withPlaceHolder:nil
competion:^(UIImage *image) {
weakImagev.image = image;
}];
4)有返回值的Block的使用方法 实例代码:
//将局部变量声明为__block,表示将会由block进行操作,比如:
__block float price = 1.99;
float (^finalPrice)(int) = ^(int quantity)
{
return quantity * price;
}; int orderQuantity = ;
price =0.99; NSLog(@"With block storage modifier - Ordering %d units, final price is: $%2.2f", orderQuantity, finalPrice(orderQuantity)); //此时输出为With block storage modifier – Ordering 10 units, final price is: $9.90
iOS 阶段学习第24天笔记(Block的介绍)的更多相关文章
- iOS阶段学习第29天笔记(UITextField的介绍)
iOS学习(UI)知识点整理 一.关于UITextField的介绍 1)概念: UITextField 是用于接收用户输入的一个控件 2)UITextField 初始化实例代码: //创建一个UIt ...
- iOS阶段学习第28天笔记(UIView的介绍)
iOS学习(UI)知识点整理 一.关于UIVIew 的介绍 1)概念:UIView 是用于装载并展示各类控件的大容器,是iOS中所有UI控件的基类 2)UIView 初始化实例代码 UIView * ...
- iOS阶段学习第27天笔记(UIButton-UIImageView的介绍)
iOS学习(UI)知识点整理 一.关于UIButton的介绍 1)概念:UIButton 是一种常用的控件,通过点击触发相应的功能 2)UIButton 的几种常用的状态 1.UICon ...
- iOS阶段学习第35天笔记(Touch手势介绍)
一.Touch手势 1.利用手势实现UIButton移动效果 实例代码 1) 创建一个继承自UIButton的类 MyButton.h 代码实现 #import <UIKit/UIKit.h ...
- iOS阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- iOS 阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- iOS阶段学习第32天笔记(页面传值方法介绍)
iOS学习(UI)知识点整理 一.界面传值方法 1.方法一 Block传值 通过SubView视图的Block向View视图传值改变View视图的背景色 实例代码: 1)SubViewContro ...
- iOS 阶段学习第11天笔记(OC基础知识)
iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import 用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...
- iOS 阶段学习第七天笔记(函数、递归)
iOS学习(C语言)知识点整理笔记 一.函数 1)概念:具有特定功能的代码块的封装 2)函数的定义: 函数类型+函数名(形参列表) 函数类型 函数名(形参类型1 形参名1,形参类型2 形参名2 ...
随机推荐
- [ZigBee] 2、 ZigBee开发环境搭建
本节介绍ZigBee基本开发环境搭建,附件中有本节介绍的软件下载地址~ 链接:http://pan.baidu.com/s/1bLdqxg 1.IAR Embedded Workbench 的安装 S ...
- http学习笔记(三)
几乎所有的http通信都是由TCP/IP承载的.http好比一辆汽车,而TCP是一条公路,所有的汽车都要在公路上跑,看看http是如何在tcp这条公路上往返的. 首先简单地看看tcp,TCP连接是通过 ...
- 使用Chef管理windows集群
但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...
- 在AWS中创建NAT节点
NAT, Network Address Translation,即网络地址转换.当内部网络的主机想要访问外网,但是又不想直接暴露给公网,可以通过NAT节点来访问外网.这样做有两个好处,第一是内网的主 ...
- C#入门基础三四
数组:数组是一组具有相同类型的值的集合,可以通过索引来访问数组中的元素. 声明数组的语法: A.数据类型 [] 数组名称: B.数据类型 [] 数组名称 = new 数据类型[数组大小]; C.int ...
- HTML+CSS学习笔记
1,html里的实际有6个<hn>标记,从<h1>到<h6>,字体由大到小. 2,em标签表示斜体. 3,<p>标签是换一个段落,<br>标 ...
- 我也说百度和google
对于程序员,最好的老师恐怕还是百度或者google或一些专业的it社区.网站了罢! 之前曾听到这样的一句话, 文艺程序员用Google Scholar/Scirus/stackoverflow.普通程 ...
- 一道js面试题看变量的作用域
[问题]分别求下面程序的输出结果: 1. <script type="text/javascript"> var a = 10; sayHi(); function s ...
- Mongodb 的基本使用
一.cmd连接mongodb 服务 进入mongodb的bin目录下:[D:\mongodb3.2.5\bin]$ mongo 127.0.0.1:27017 常用查询: show dbs 查看所有数 ...
- Jquery 选择器 详解
在线文档地址:http://tool.oschina.net/apidocs/apidoc?api=jquery 各种在线工具地址:http://www.ostools.net/ 一.基本选择器 $( ...