Block 的用法
对于类的继承问题,子类在实现的时候,一般是自下而上,先看看下面的实现没有,没实现就向上找方法去实现。
// // main.m #import <Foundation/Foundation.h> #import "LoginMangage.h" #import "NSString+Addition.h" //2 block的当做方法进行传值 //3 一种Block排序的写法(貌似还是以前的方法哦) //4 用结构体(-1 0 1) NSComparisonResult 类型接收判断结果 //5 打印出当前时区的时间(不是格林威治时间哦) //6 练习-打印出当前时区的时间 //7 dateWithTimeIntervalSinceNow:的使用 //8 (来自互联网-究竟是不是毫秒)获取自1970年以来的毫秒数的方法 ?????? //9 两个时间判断是否相等 获取时间间隔 //10 catergroy 对 NSString 类的方法的扩展 int main(int argc, const char * argv[]) { // @autoreleasepool { // //// // 1.定义一个Block,返回值为bool,有两个NSString 实现判断两个字符串是否相等。 // // // // 2.创建一个数组,初始化为@“123”,@“21”,@“33”,@“69”,@“108”,@“256”使用Block,进行数组排序,并输出内容 // // // // 3.定义一个Block,返回值为NSInteger ,有两个参数,一个是NSArray 一个是NSString,实现判断数组时候包含此字符串,如果包含,返回字符串下标,如果不包含返回-1. // //(1) // printf("输入两个字符串\n"); // char str[2][10] = {0}; // NSMutableArray * arr = [NSMutableArray array]; // for (int i = 0; i < 2; i++) { // scanf("%s",str[i]); // NSString * str0 = [[NSString alloc]init]; // NSString * str1 = [NSString stringWithUTF8String:str[i]]; // arr[i] = [str0 stringByAppendingString:str1]; // } // BOOL (^compareWithTwoNString)(NSString *,NSString *) = ^(NSString *s0,NSString *s1){ // return [s0 isEqualToString:s1]; // }; // int isEqual = compareWithTwoNString(arr[0],arr[1]); // if (isEqual) { // NSLog(@"两次输入相等"); // }else{ // NSLog(@"两次输入不相等"); // } // //(2) // NSMutableArray * muArr = [@[@"123",@"21",@"69",@"33",@"108",@"256"]mutableCopy]; // [muArr sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { // return [obj1 compare:obj2]; // }]; // NSLog(@"排序之后为 %@",muArr); // //(3) // NSInteger(^isInIt)(NSArray *,NSString *) = ^(NSArray * arr,NSString * str){ // NSInteger tem = 0; // for (int i = 0; i < [arr count]; i++) { // if ([arr[i] isEqualToString:str]) { // tem++; // NSLog(@"已经找到了"); // return tem ; // break; // } // } // NSLog(@"没有找到"); // tem = -1; // return tem;//注意这里的 return 的位置 // }; // NSArray * arrary = @[@"lu",@"zhang",@"huang ",@"li ",@"zhao",@"wang",@"qian"]; // NSInteger afterFind = isInIt(arrary,@"wang"); // NSLog(@"下标为%ld",afterFind); // } // @autoreleasepool { // //2 block的当做方法进行传值 // LoginMangage * login1 = [[LoginMangage alloc]init]; // [login1 initWithName:@"user" paswword:@"123456" succe:^(NSString *success) { // NSLog(@"%@",success); // } failure:^BOOL(NSString *errorMessage) { // NSLog(@"%@",errorMessage); // return 1; // }]; // } // @autoreleasepool { // //3 一种Block排序的写法(貌似还是以前的方法哦) // NSArray * stringArray = [NSArray arrayWithObjects:@"abc 1", @"abc 21", @"abc 12",@"abc 13",@"abc 05",nil]; // NSComparator sortBlock = ^(id string1 ,id string2){//貌似这里开始的三行代码没有什么作用 // return [string1 compare:string2]; // }; // NSArray * sortArray = [stringArray sortedArrayUsingSelector:@selector(compare:)]; // NSLog(@"排序后的为:%@",sortArray); // } // @autoreleasepool { // //4 用结构体(-1 0 1) NSComparisonResult 类型接收判断结果 // NSString * str1 = @"123"; // NSString * str2 = @"456"; // NSComparisonResult(^compareStrings)(NSString *,NSString *) = ^(NSString * string1 ,NSString * string2){ // return [string1 compare:string2]; // }; // NSComparisonResult resu = compareStrings(str1,str2); // if (resu == 1) { // NSLog(@"str1小于str2"); // } // if (resu == -1) { // NSLog(@"str1大于str2"); // } // if (resu == 0) { // NSLog(@"str1等于str2"); // } // } // @autoreleasepool { // //5 打印出当前时区的时间(不是格林威治时间哦) // NSDate * datenow = [NSDate date];//注意这里不能写成了 NSData //// NSLog(@"%@",datenow);//没有修改时间显示格式的的时候打印结果 // NSString * datestring = @"yyyy年 MMM d 日 是一年的第 D 天 EEEE ahh:MM:SS"; // NSDateFormatter * formatter = [[NSDateFormatter alloc]init]; // [formatter setDateFormat:datestring]; // NSString * strdate = [formatter stringFromDate:datenow]; // NSLog(@"获取当前时间为:%@",strdate); // //互联网 // //时区转换,取得系统时区,取得格林威治时间差秒 // //(http://www.isaced.com/post-175.html) 已经实现在控制台的转化为当前时区 // NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone]secondsFromGMT]; // NSLog(@"%f",timeZoneOffset/60.0/60.0); // datenow = [datenow dateByAddingTimeInterval:timeZoneOffset]; // [formatter setDateFormat:@"现在日期:yyyy年MM月dd日\n现在时刻:aHH:mm:ss"]; // NSDate * dtime = [NSDate date]; // NSString * newDateStr = [formatter stringFromDate:dtime]; // NSLog(@"%@",newDateStr); // } // @autoreleasepool { // //6 练习-打印出当前时区的时间 // NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone]secondsFromGMT]; // NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init]; // [dateFormatter setDateFormat:@"\n现在日期:yyyy年 MM月 d 日 EEEE\n 现在时间:aHH:mm:ss "]; // NSDate * dateNow = [NSDate date]; // dateNow = [dateNow dateByAddingTimeInterval:timeZoneOffset]; // NSString * afterTrDate = [dateFormatter stringFromDate:dateNow]; // NSLog(@"当前时间:%@",afterTrDate); // } // @autoreleasepool { // //7 dateWithTimeIntervalSinceNow:的使用 // NSDate * dateNow = [NSDate date]; // NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone]secondsFromGMT]; // [dateNow dateByAddingTimeInterval:timeZoneOffset]; // NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init]; // [dateFormatter setDateFormat:@"日期:yyyy年 MM 月 dd 日 EEEE\n时间:aHH:mm:ss"]; // NSString * afterDate = [dateFormatter stringFromDate:dateNow]; // NSLog(@"\nnowtime = %@",afterDate); // //获取到现在一段时间间隔的日期 // NSDate * tomorrowDate = [NSDate dateWithTimeIntervalSinceNow:24*60*60]; // NSString * afterDaterTomro = [dateFormatter stringFromDate:tomorrowDate]; // NSDate * yestredayDate = [NSDate dateWithTimeIntervalSinceNow:-24*60*60]; // NSString * afterDateYesday = [dateFormatter stringFromDate:yestredayDate]; // NSLog(@"\ntomorrowdate = %@\nyesterday = %@ ",afterDaterTomro,afterDateYesday); // } // @autoreleasepool { // //8 (来自互联网-究竟是不是毫秒)获取自1970年以来的毫秒数的方法 ?????? // NSDate * dateNow = [NSDate date]; // NSTimeInterval time = [[NSDate date] timeIntervalSince1970]; // // NSTimeInterval返回的是double类型,输出会显示为10位整数加小数点加一些其他值 // // 如果想转成int型,必须转成long long型才够大。 // // 将double转为long long型 // long long dTime = [[NSNumber numberWithDouble:time]longLongValue]; // // 输出long long型 // NSString * curTime = [NSString stringWithFormat:@"%llu",dTime]; // NSLog(@"%@",curTime); // } // // @autoreleasepool { // //9 两个时间判断是否相等 获取时间间隔 // NSDate * dateNow = [NSDate date];//获取当前时间 // NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone]secondsFromGMT];//获取与格林威治时区的时差秒 // [dateNow dateByAddingTimeInterval:timeZoneOffset];//格林威治时区加上时差 // NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];//时间格式设置器 // [dateFormatter setDateFormat:@"日期:yyyy年 MM 月 dd 日 EEEE 时间:aHH:mm:ss"];//注意这里的时间设置格式不能写错啦 // NSString * afterTime = [dateFormatter stringFromDate:dateNow]; // NSLog(@"%@",afterTime); // NSDate * yesterday = [NSDate dateWithTimeIntervalSinceNow:-24*60*60]; // NSTimeInterval timeInterval = [dateNow timeIntervalSinceDate:yesterday]; // NSLog(@"%.f",timeInterval/24/60/60); // NSTimeInterval timeInterval1970 = [yesterday timeIntervalSince1970]; // NSLog(@"1970年到现在的秒数为%.f",timeInterval1970); // //比较两个时间(返回一个枚举值)默认为升序 // NSComparisonResult result = [dateNow compare:yesterday]; // if (result != 0) { // NSLog(@"NSComparisonResult接收的结果是两个时间段不相等"); // } // BOOL isEqual = [dateNow isEqualToDate:yesterday]; // if (isEqual) { // NSLog(@"两个日期相等"); // }else{ // NSLog(@"两个日期不相等"); // // } // } // @autoreleasepool { // //10 catergroy 对 NSString 类的方法的扩展 // NSString * str = @"HHH"; // [str sayHi]; // //只能添加方法 // //为 NSString 扩充方法 :获取字符串的首字母并大写 // NSString * oneString = [str getFirstCharacter]; // NSLog(@"获取的首字母为:%@",oneString); // NSString * newStr = [str change]; // NSLog(@"%@",newStr); // NSInteger num = 13523526302; // NSString * newstrnum = [[NSString alloc]init]; // newStr = [str transToString:num];//把 NSInteger 型数字转化为 字符串数字 // NSLog(@"%@",newStr); // NSInteger nsnum = [newStr stringToValue];//把字符串数字转化为 NSInteger 型数字 // NSLog(@"%ld",nsnum); // } return 0; }