OC11_Block
2024-05-18 07:04:30
main.m
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {
1.函数指针 函数回调 动态排序Block 块语法本质 匿名函数类似 函数指针当做 变量使用四类Block
(1).无参数,无返回值.block1 block变量void(^)(void) block类型^void(void){函数体} block初值(匿名函数)void(^block1)(void) = ^void(void) {NSLog(@“无参数,无返回值”);
};
block调用,类似函数调用.
block1();(2).有参数,无返回值.
参数1:字符串.
参数2:可变数组.
void(^block2)(NSString *, NSMutableArray *) = ^void(NSString *string, NSMutableArray *array) {[array addObject:string];NSLog(@"%@", array);
};
参数传入.
block2(@"Messi", [NSMutableArray array]);(3).无参数,有返回值.
block 初值可以不写返回值类型.(NSInteger可以不写)
NSInteger(^block3)(void) = ^NSInteger(void) {return 100L
}
NSLog(@"%ld", block());(4).有参数,有返回值.
NSMutableDictionary *(^block4)(NSString *, NSMutableArray *) = ^NSMutableDictionary *(NSString *string, NSMutableArray *array) {NSMutableDictionary *dic = [NSMutableDictionary dictionary];[dic setObject:array forKey:string];return dic;
}
NSLog(@"%@", block4(@"Messi", @[@"AA", @"BB"]));
*****注意*****
(1).等号后面的参数,类型和位置必须一致;等号后面的参数一定要有参数名.
(2).如果有返回值,返回值的类型必须一致. return 0;
}
2.block和变量之间的关系.
NSInteger value = 100L;
void(^blockTest)(void) = ^void(void) {NSLog(@“%ld, %ld“, value, ++a); // NSLog(“%ld, %@“, value, a); 如果在value前++, 会报错,value = 100L,这样后面就可以在value前++.或者在NSInteger前加static,static NSInteger value = 100L,这样后面就可以在value前++,或者将NSInteger value = 100L写在main之上.
}
blockTest();#import <Foundation/Foundation.h>
// 在main上方写变量了声明.
NSInteger *a = 123;int main(int argc, const char * argv[]) {
3.block重定义的使用.
#import <Foundation/Foundation.h>// block 重定义
typedef void(^BLOCK)(id);int main(int argc, const char * argv[]) {// block重定义的使用.BLOCK blockPrint = ^(id object) {NSLog(%@, object);
};
blockPrint(@[@"messi", @"kaka"]);
}
4.高级排序,block排序
main.m
(1).block排序器
NSArray *arr = @[@"meiss", @"kaka", @"ABC", @"GHJ"];
NSComparator blockCMP = ^(id obj1, id obj2) {// 升序return [obj1 compare:obj2];// 降序return -[obj1 compare:obj2];
};
NSArray *newArr = [arr sortedArrayUsingComparator:blockCMP];
blockPrint(newArr);
结合上面的block重定义的使用方法
(2).排序
NSArray *nnArray = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {return -[obj1 compare:obj2];
}];
blockPrint(nnArray);
(3).可变数组
NSMutableArray *mArr = [NSMutableArray arrayWithArray:arr];
[mArr sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {return [obj1 compare:obj2];
}];
blockPrint(mArr);
OC11_Block相关推荐
最新文章
- (2) 第二章 WCF服务与数据契约 服务契约详解(二)- 如何引用WCF提供的服务
- python基础代码事例-学习笔记:python3,代码。小例子习作(2017)
- 百度地图API使用之实现定位
- (JavaWeb)HttpServletResponse和HttpServletRequest
- 接口,抽象类与内部类
- docker-compose.yaml的一些坑(趁我还记得赶快记下来)
- java数据结构之排序-- 插入排序算法
- 当检测到运动时如何自动打开门灯
- linux关闭4750 端口,【ubuntu分享帖】acer 4750G ubuntu安装后的一些设置
- 计算机日志研究方法,基于日志的计算机取证技术研究与实现
- 模拟image的ajaxPrefilter与ajaxTransport处理
- python+django+mysql疫苗预约系统毕业设计毕设开题报告
- 计算机硬盘容量1t,硬盘1tb等于多少gb 硬盘容量计算公式
- 五款好用的开源CRM系统推荐
- 基于51单片机的超声波测距
- 星星之火-38:LTE物理层无线资源与帧结构快速入门
- python捕获屏幕的标准库_Python标准库urllib2的使用和获取网站状态举例
- 基于jquery的bankInput银行卡账号格式化
- 用pycharm连接云端服务器
- Android 防火墙 知乎,知乎客户端下午瘫痪,都是第三方防火墙变更害的