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;
}
View Code  main.m  

相关文章: