block 声明定义
来源:互联网 发布:mac图片出现问号 编辑:程序博客网 时间:2024/06/01 07:31
#import <Foundation/Foundation.h>// 使用typedef 给block类型起别名typedef CGFloat (^Calculate)(CGFloat, CGFloat);int whole = 1;int main(int argc, const char * argv[]) { @autoreleasepool { // 实现将字符串转换为整形的blcok int (^block1) (NSString *str) = ^int (NSString *str) { return [str intValue]; }; // 类型: int (^) (NSString *) // 变量名: block1 // 简写 // block声明中的变量名可以省略 // block的匿名函数部分,返回值可以省略 int (^block2) (NSString *) = ^(NSString *str) { return [str intValue]; }; // 调用block 实现将字符串转为数字 int i = block2(@"8188"); // 可以叫做回调 NSLog(@"i= %d",i); // 练习:声明block变量,将浮点型数字,转化字符串 NSString * (^block3) (float) = ^(float f) { return [NSString stringWithFormat:@"%.2f", f]; }; NSString *str1 = block3(8188.75); NSLog(@"str1 = %@", str1); // 声明block变量,实现求两个NSInteger变量的和 int (^sum) (int, int) = ^(int a, int b) { return a + b; }; int a = 100, b = 80; int sum1 = sum(a, b); NSLog(@"sum = %d", sum1); // 声明block变量,实现求两个NSInteger变量的差 NSInteger (^sub) (NSInteger , NSInteger) = ^(NSInteger a, NSInteger b) { return a - b; }; NSInteger he = sub(100, 20); NSLog(@"sub = %ld", he); // 声明block变量,实现求两个NSInteger变量的积 NSInteger (^ji) (NSInteger, NSInteger) = ^(NSInteger a, NSInteger b) { return a * b; }; NSInteger jii = ji(10, 20); NSLog(@"jii = %ld", jii); // 练习:声明block判断数组中是否包含某个元素 BOOL (^ifhave) (NSArray *, NSString *) = ^(NSArray *arr, NSString *str) { return [arr containsObject:str]; }; // 使用新类型定义block __block int beiShu = 10; // 局部变量,不允许修改,添加了 __block(two "__") 后才可以修改 Calculate product = ^(CGFloat a, CGFloat b) { beiShu = 5; whole = 2; // 全局变量 return a * b * 5; }; // 注意:block内部可以读取外部局部变量的值,想要修改,要添加 __block 修饰变量 // block内部可以读取和修改外部全局变量 CGFloat product1 = product(1.5, 2.0); NSLog(@"product1 = %.2f", product1);
0 0
- block 声明定义
- IOS中block的声明定义和使用 一
- 定义block
- block 定义
- block 定义
- 声明 & 定义
- 定义 & 声明
- Block声明,定义, 最基础的用法学习,很好的一篇文章
- 半路出家, 我的iOS自学之路-4-Block的声明,定义,闭包性,强引用循环
- block 队列声明
- 声明一个block宏
- Block的定义
- 常用 Block 定义
- 定义一个Block
- Block定义与使用
- block定义详解
- Block两种定义
- block的定义,赋值
- java socket 浅谈
- 在与SQL Server建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。error:40
- SQL Server 2008存储过程中使用另一个存储过程返回的记录集
- php守护进程管理框架
- Ubuntu打开终端的方法三种
- block 声明定义
- Gson解析 json 实例
- R语言 我要如何开始R语言
- IK中文分词器配置
- 多线程
- 杭电acm2061Treasure the new start, freshmen!(珍惜新的开始,新生!GPA)
- Struts
- 在ubuntu的Terminal下编译运行bls签名方案
- Android中自定义样式与View的构造函数中的第三个参数defStyle的意义