Block

#import <Foundation/Foundation.h>
#import "Person.h"
// 给block起别名
//typedef <#returnType#>(^这写新名字)(<#arguments#>);
int sumValue(int a, int b)
{
return a + b;
}

int resultTwoNumber(int num1, int num2, int (^block)(int a, int b))
{
return block(num1,num2);

};


int main(int argc, const char * argv[]) {

// 回顾 函数指针:指向函数的指针
// 保存的函数地址
// (例)两个数的和的函数

// int (*p)(int a, int b) = NULL;
// p = sumValue;
// // 函数指针调用
// p(3,5);
// printf("%d\n",p(3,5));
//
// Block标志 ^ 托字符(凸起符)
// Block保存的是 有特定功能的函数体
// int(^变量名)(int a,int b) = ^初值(跟前面类型要一致)
// 初值的部分 是一个没有名字的 函数体
// int (^Block)(int a,int b) = ^int (int a,int b){
// return a + b;
// };
// // 打印参数的block OC的
// // 无返回值 void
//
//
// void (^PrintfBlock)(NSString *str) = ^void (NSString *str){
// NSLog(@"%@",str);
// };
//
block的调用 直接使用block的名字去调用
// PrintfBlock(@"哈哈");
//

// block类型 NSInteger (^)(NSString *str)
// block名 B
// block的值 匿名的函数 并且类型与Block类型相同
// 匿名函数是函数 其函数中定义的变量 存在栈区
//
// NSInteger (^B)(NSString *str) = ^NSInteger (NSString *str){
//
// return [str intValue];
//
// };
// NSLog(@"%ld",B(@"15"));
//
//
// NSInteger (^block1)(NSInteger a, NSInteger b) = ^NSInteger (NSInteger a,NSInteger b){
//
// return a + b;
//
// };

// block作为参数 体现优势
// 实现 两个数的 加减乘除
// int result = resultTwoNumber(15, 3, ^int(int a, int b)
// {
// return a / b;
//
// });
//
// NSLog(@"%d",result);
// block的好处

// 当把block当做一个参数 传入方法中
// 非常灵活 可以灵活掌控block的实现
// 也就是 你传入的block实现的是什么功能
// 你这个方法 就实现什么功能

// block排序
// NSMutableArray *array = [NSMutableArray arrayWithObjects:@11,@5,@7,@19, nil];
//
// NSNumber *n1 = [NSNumber numberWithInt:11];
// // 语法糖 初始化NSNumber类型方法
// NSNumber *n2 = @11;


// [array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
//
//
// // 实现部分 填写 obj1 和obj2 的关系
// // 实现原理: 数组中两个元素进行比较
// // 比较后 返回值 如果前面币后面打则 交换
// // 经此比较到最后一个元素 完成排序
//
// // compare:可以比较的类型
// // 1.字符串类型(NSString *)
// // 2.NSNumber *类型
//
// NSNumber *str1 = (NSNumber *) obj1;
// NSNumber *str2 = (NSNumber *) obj2;
//
// // 利用交换位置来排序
//
// if ([str1 compare:str2] > 0) {
// return NSOrderedDescending;
// }else if ([str1 compare:str2]){
// return NSOrderedSame;
// }else{
// return NSOrderedAscending;
// }
//
// }];
// NSLog(@"%@",array);


// NSMutableArray *array = [NSMutableArray arrayWithObjects:@11,@5,@7,@19, nil];
//
// NSComparisonResult (^MyCopmpare)(id obj1, id obj2) = ^NSComparisonResult (id obj1,id obj2){
// // 先确定类型
// NSNumber *str1 = (NSNumber *)obj1;
// NSNumber *str2 = (NSNumber *)obj2;
//
// if ([str1 compare:str2] > 0) {
// return NSOrderedDescending;
// }else if ([str1 compare:str2]){
// return NSOrderedSame;
// }else{
// return NSOrderedAscending;
// }
//
// };
//
//
//
//
// // 根据类型 确定 升序 还是 降序
//
//
// };
//
//[array sortUsingComparator:MyCopmpare];
//
//
//NSLog(@"%@",array);

// 需要什么类型 咱们就给什么类型 就行

// Person *p1 = [[Person alloc]initWithName:@"wade" age:30];
// Person *p2 = [[Person alloc]initWithName:@"kobe" age:35];
// Person *p3 = [[Person alloc]initWithName:@"durant" age:24];
// Person *p4 = [[Person alloc]initWithName:@"james" age:27];
// Person *p5 = [[Person alloc]initWithName:@"rose" age:23];
// // 初始化可变数组
// NSMutableArray *array = [NSMutableArray arrayWithObjects:p1,p2,p3,p4,p5, nil];
// // 按姓名排序
//
// [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){
// // 先判断类型
// Person *p1 = (Person *)obj1;
// Person *p2 = (Person *)obj2;
// // 姓名 升序排序
//
// if ([[p1 name] compare:[p2 name]] > 0) {
// return NSOrderedDescending;
// } else if([[p1 name] compare:[p2 name]] == 0){
// return NSOrderedSame;
// } else{
// return NSOrderedAscending;
// }
//
// }];
// [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
// // 先判断类型
// Person *p1 = (Person *)obj1;
// Person *p2 = (Person *)obj2;
// // 再判断排序
// if ([p1 age] > [p2 age]) {
// return NSOrderedDescending;
// } else if([p1 age] == [p2 age]) {
// return NSOrderedSame;
// }else
// return NSOrderedAscending;
// }];
// NSLog(@"%@",array);
//

// // 字面量的使用(语法糖)
// // 切记:字面量使用的初始化方法 是类方法的初始化
// NSArray *array = [NSArray arrayWithObjects:@"1",@"2",nil];
// // 相当于
// NSArray *arrayN = @[@"1",@"2"];
//
// // 取出一个元素
// [arrayN objectAtIndex:0];
// // 相当于
// arrayN[0];
//
// NSNumber *num = [NSNumber numberWithInteger:11];
// // 相当于
// NSNumber *num1 = @11;
//



return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值