iOS block介绍和使用技巧(基础篇)
来源:互联网 发布:算法分析与设计吕国英 编辑:程序博客网 时间:2024/05/16 11:16
第一部分 block入门
声明和使用一个block
int multiplier = 7;int (^myBlock)(int)=^(int num){ return num*multiplier;};printf("%d",myBlock(3));//prints "21"//block可以使用相同作用域里定义的变量
声明一个block的引用
void (^blockOne)(void);//无参无返回值int (^blockTwo)(int,char);//int和char参数,int返回值void(^blocks[10])(int);//有10个block组成的array
typedef float (^MyBlockType)(float,float);MyBlockType myfirstBlock=//...;MyBlockType mySecondBlock=//...;
创建一个Block
^修饰符来表示一个block的开始,他通常后面跟着一个()包起来的参数列表。block的主体一般包含在{}里面。下面定义了一个简单的block
int (^oneFrom)(int);oneFrom=^(int anInt){return anInt-1;};
全局block
#import<stdio.h>int GlobalInt = 0;int (^getGlobalInt)(void)=^{return GlobalInt};
block变量
block int x = 123;//x lives in block storagevoid (^printXAndY)(int)=^(int y){x=x+y;printf("%d %d\n",x,y);};printXAndY(456);//579 456
对象(object)和block变量
当block里引用一个对象时,该对象会被retain,但是__block存储类型修饰符标记不会被retain
调用一个block
int (^oneFrom)(int);oneFrom=^(int anInt){return anInt-1;};oneFrom(10);//9float(^distance)(float,float,float)=^(float s.float a,float t){float d=(s*t)+.5*a*t*t;return d;};float howfar=distance(0.0,9.8,1.0);//4.9
block作为一个函数参数
block作为一个方法的参数
block BOOL found=NO;NSSet *aset=@[@"Alpha",@"bata",@"Gamma"];NSString *str=@"gamma";[aset enumerateObjectsUsingBlock:^(id obj,BOOL *stop){if([obj localizedCaseInsensitiveCompare:str]==NSOrderSame)*stop=YES;found=YES;}}];
拷贝block
你可以用c函数来拷贝和release一个block
block copy();block release();
注意:尽量不要在循环中使用block
0 0
- iOS block介绍和使用技巧(基础篇)
- iOS 开发 block 篇 基础介绍
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS中Block介绍(一)基础
- iOS 代码块(block)使用基础
- iOS block简介和使用(一)
- Block使用介绍(-)
- Block,简单使用和介绍
- Block介绍(一)基础
- Netty线程模型
- UBUNTU 编译安装source navigator源码包
- 【Android基础学习】Android使用fitsSystemWindows属性实现–状态栏【status_bar】各版本适配方案
- quagga代码分析一
- MS project中的完成百分比、工时完成百分比和实际完成百分比
- iOS block介绍和使用技巧(基础篇)
- menu为组件的ID,可以控制组件是否可见
- 数组排序(按对象中某个属性进行排序)
- CodingBlack的android应用开发框架
- ios 8+ (xcode 6.0 +)应用程序Ad Hoc 发布前多设备测试流程详解
- linux 常用基本命令之十九 blkid
- 产品数据核心模型CPM(一)
- 开始重新学习
- C++版下载每天网页&txt,c++获取当前时间yyyymmdd格式