HHH航_IOS开发学习之路

还在进步中的小菜鸟,如若写的不当,还望各路大神多多指正

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;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/OnthewayH/article/details/49903487
上一篇OC试题 ——通讯录(AddressBook)
下一篇OC字典
想对作者说点什么? 我来说一句

Block简析(分析block用法与定义)

2016年05月08日 1.34MB 下载

IOS Block的使用

2014年05月11日 33KB 下载

small block VS large block nandflash

2009年05月08日 388KB 下载

magento中block应用

2010年03月19日 256KB 下载

dumping oracle block

2014年02月24日 87KB 下载

codeblock教程

2011年09月22日 3.48MB 下载

JAVA 地雷游戏源代码

2011年12月13日 3KB 下载

Linux 块设备 文件系统构架

2009年12月21日 368KB 下载

[微软企业库] Enterprise Library 3.0

2013年07月16日 21.3MB 下载

没有更多推荐了,返回首页

关闭
关闭