Block这渣渣,对于刚写IOS的人,肯定都是有很多疑惑的,我们先来说明Block的语法及用例。
1.定义一个Block
int num1 = 2;
定义一个名为myBlock,返回值为int参数为空的 block
int (^myBlock)(void) = ^(void) {
return 10;
};
myBlock();
int (^myBlock1)(int) = ^(int num){
return num * 10;
};
myBlock1(num1);
void (^myBlock2)(int,int) = ^(int num1,int num2){
NSLog(@"num1 is : %d num2 is : %d ",num1,num2);
};
myBlock2(num1,100);
2.把block当做参数
-(void) addPullToRefreshBlock:(void(^)(void))block {
_cardTableView.mj_header = [MyMJHeader headerWithRefreshingBlock:^{
block();
}];
}
3.把block当做返回值
- (void (^)(void)) method;
4.typedef block
typedef void (^BoolBlock)(BOOL);//一个只接受一个BOOL参数,没有返回值的block
typedef int (^IntBlock)(void);//一个没有参数,返回int的block
typedef BoolBlock (^HugeBlock)(IntBlock);//看看,这个HugeBlock的参数和返回值都是block
同样,利用typedef后的 block 类型,就可以简化上面各种写法
例如:
block参数
-(void) addPullToRefreshBlock:RefreshBlock block{
//code
}
返回block
-(BoolBlock) method;
5.类的成员变量
利用上面的 typedef后的类型
@property (copy,nonatomic) BoolBlock myBlock;
6.全局block
static int(^maxIntBlock)(int, int) = ^(int a, int b){return a>b?a:b;};
int main()
{
printf("%d", maxIntBlock(2,10));
return 0;
}
7.__block
如果要在block内修改block外声明的栈变量,那么一定要对该变量加__block标记
int main()
{
__block int i = 1024;
BoolBlock bBlock = ^(BOOL bV) {
if (bV) {
i++;//如果没有__block标记,是无法通过编译的。
}
};
}
IOS Block基础用例
发表于:2017-01-09
作者:网络转载
来源:
 相关文章
如何使测试用例可执行? 漫谈测试成长之探索——测试用例评审 七分钟教会你如何编写一个合格的测试用例 软件测试技术之测试用例场景法的3个例子 测试用例基础:接口测试流程及用例设计 软件测试人员一定要会的用例设计思路- 周排行
- 月排行
-   相机测试用例:手机、相机和摄像头测...
-   测试用例之支付功能测试点整理
-   阿里巴巴B2B测试用例编写规范
-   软件测试用例设计的基础概述
-   用单例的方法实现夜间模式
-   如果让你来测试扫码支付,你会考虑哪...
-   我所理解的测试策略——功能用例设计策略
-   相机测试用例:手机、相机和摄像头测...
-   测试用例之支付功能测试点整理
-   浅谈测试用例分级
-   嵌入式软件测试方法、案例与模板详解...
-   系统测试用例设计思路/模型
-   史上最详细的测试用例设计方法讲解
-   Python自动化测试如何自动生成测试用例?