类的扩展

//

//  main.m

 

#import<Foundation/Foundation.h>

#import "NSString+PlayDota.h"

#import "NSDate+ChangeString.h"

#import "Person.h"

 

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

   @autoreleasepool {

      // NSDate

       //      创建一个NSDate对象

       // 1、初始化一个当前时间

 //      NSDate *date = [NSDatedate];

       //因为NSDate这个类重写了 description 方法,所以打印出来的总是相对于格林尼治(0时区)的时间。

      // NSLog(@"%@",date);

 

//       // 2、相对于当前时间的date对象(- 表示之前,时间点为 0 度经线时间)

//       NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:60 * 60];

//       NSLog(@"%@",date1);

//       

//       // 3、相对于 1970年的 1 月 1 日 0 时 0分 0 秒的时间对象。

//       NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:60 * 60 * 24];

//       NSLog(@"%@",date2);

//       

//       // 4、相对于 2001 年 1 月 1 日 00:00:00的时间对象

//       NSDate *date3 = [NSDate dateWithTimeIntervalSinceReferenceDate:60 * 60];

//       NSLog(@"%@",date3);

//       

//        NSDate *earlier = [date1 earlierDate:date3];

//        NSLog(@"%@", earlier);

//       

//       

//       double interval = [date1 timeIntervalSinceDate:date];

//       NSLog(@"%f",interval);

//       

//       //  用NSTimeZone得到一个相对于 GMT 的时间偏移量

//       NSTimeZone *zone = [NSTimeZonesystemTimeZone];

//       NSLog(@"%@",zone);

//

//        // 得到当前时区和GMT之间的时间间隔。

//       NSTimeIntervaltimeInterval = [zone secondsFromGMT];

//       NSLog(@"%f",timeInterval);

//       // 得到当前时区对象

//       NSDate *date7 = [NSDatedateWithTimeIntervalSinceNow:timeInterval];

//       NSLog(@"%@",date7);

 

 

       //计算当前时间和⼀一个固定时间的差值,如果差值在60秒内,输出“刚刚”,如果在60秒外3600秒内,输出“xx分钟前”,如果3600秒外,3600*24秒内,输出“xx⼩小时前”

 

//       NSDate *date4 = [NSDatedateWithTimeIntervalSinceReferenceDate: 60 ];

//       NSDate *date5 = [NSDatedateWithTimeIntervalSinceReferenceDate: 60 * 60];

//       NSTimeIntervaltimeInterval = [date4 timeIntervalSinceDate:date5];

//       

//        if (timeInterval< 0) {

//            timeInterval = timeInterval * -1;

//       }

//       if (timeInterval< 60) {

//            NSLog(@"刚刚");

//       }else if (timeInterval< 3600){

//            NSLog(@"%f分钟前",timeInterval/ 60);

//       }else{

//            NSLog(@"%f小时前",timeInterval/ 60 / 60);

//       }

 

        // NSDateFormatter

       //  当前类以及父类都没有初始化方法,用的是NSObject的初始化方法

 

     //  NSDateFormatter *format =[[NSDateFormatteralloc]init];

 

       //设置格式

//       // (英文字母)固定格式yyyy MM dd HH mm ss

//       [formatsetDateFormat:@"yyyy-MM-dd-HH-mm-ss"];

//

//       //根据格式将字符串转化为时间

//       NSDate *date = [format dateFromString:@"2015-11-13-11-49-24"];

//       NSLog(@"%@",date);

//       

//       // 根据格式将时间转换为字符串

//       NSString *str = [format stringFromDate:date];

//          NSLog(@"%@",str);

 

//       //  将字符串@“2014年05月01日10点23分18秒”转换为NSDate对象。

//       NSString *str = @"2014年5月01日 10点23分18秒";

//       NSDateFormatter *format = [[NSDateFormatteralloc]init];

//       [format setDateFormat:@"yyyy年MM月dd日 HH点mm分ss秒"];

//       NSDate *date = [format dateFromString:str];

//       NSLog(@"%@",date);

 

         //category

NSString *str = @"dota";

       // 给分类添加的方法发送消息

       [strplayDota];

 

       //  category: 1、可以添加方法:方法既可以被当前类使用,也可以被子类使用;  2、分类不可以添加实例变量。

          // *** 3、一般为没有  .m  的类添加方法。 ***

 

       //   inherit: 1、可以添加实例变量以及方法,但是添加的方法以及实例变量只能被自己以及子类使用,不能被父类使用。

NSDate *date =[NSDatedateWithDateString:@"20140402142850"];

NSLog(@"%@",date);

 

 

       // extension

        // 延展用来管理类的私有方法,这个类程序员必须拥有 .h 和 .m 文件

       // 延展的作用:符合OC的三大特征之封装特性,使程序员更好的使用这个类。

       Person *p = [[Person alloc] initName:@"cook"];

       //[p cook];

 

 

        // 协议和代理

        //  1、首先需要些一个协议,协议是声明方法(分为必须实现和选择实现),因此只有。文件

         //  2、签订协议需要两个对象(委托方,代理人),委托方不想做的事情通过协议交给代理人去做。

           //  3、代理人必须遵守协议,且实现协议里的方法

 

 

 

    }

return 0;

}

// main.m

 

#import<Foundation/Foundation.h>

#import "NSString+PlayDota.h"

#import "NSDate+ChangeString.h"

#import "Person.h"

 

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

   @autoreleasepool {

      // NSDate

       //      创建一个NSDate对象

       // 1、初始化一个当前时间

 //      NSDate *date = [NSDatedate];

       //因为NSDate这个类重写了 description 方法,所以打印出来的总是相对于格林尼治(0时区)的时间。

      // NSLog(@"%@",date);

 

//       // 2、相对于当前时间的date对象(- 表示之前,时间点为 0 度经线时间)

//       NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:60 * 60];

//       NSLog(@"%@",date1);

//       

//       // 3、相对于 1970年的 1 月 1 日 0 时 0分 0 秒的时间对象。

//       NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:60 * 60 * 24];

//       NSLog(@"%@",date2);

//       

//       // 4、相对于 2001 年 1 月 1 日 00:00:00的时间对象

//       NSDate *date3 = [NSDate dateWithTimeIntervalSinceReferenceDate:60 * 60];

//       NSLog(@"%@",date3);

//       

//        NSDate *earlier = [date1 earlierDate:date3];

//        NSLog(@"%@", earlier);

//       

//       

//       double interval = [date1 timeIntervalSinceDate:date];

//       NSLog(@"%f",interval);

//       

//       //  用NSTimeZone得到一个相对于 GMT 的时间偏移量

//       NSTimeZone *zone = [NSTimeZonesystemTimeZone];

//       NSLog(@"%@",zone);

//

//        // 得到当前时区和GMT之间的时间间隔。

//       NSTimeIntervaltimeInterval = [zone secondsFromGMT];

//       NSLog(@"%f",timeInterval);

//       // 得到当前时区对象

//       NSDate *date7 = [NSDatedateWithTimeIntervalSinceNow:timeInterval];

//       NSLog(@"%@",date7);

 

 

       //计算当前时间和⼀一个固定时间的差值,如果差值在60秒内,输出“刚刚”,如果在60秒外3600秒内,输出“xx分钟前”,如果3600秒外,3600*24秒内,输出“xx⼩小时前”

 

//       NSDate *date4 = [NSDatedateWithTimeIntervalSinceReferenceDate: 60 ];

//       NSDate *date5 = [NSDatedateWithTimeIntervalSinceReferenceDate: 60 * 60];

//       NSTimeIntervaltimeInterval = [date4 timeIntervalSinceDate:date5];

//       

//       if (timeInterval< 0) {

//            timeInterval = timeInterval * -1;

//       }

//       if (timeInterval< 60) {

//            NSLog(@"刚刚");

//       }else if (timeInterval< 3600){

//            NSLog(@"%f分钟前",timeInterval/ 60);

//       }else{

//            NSLog(@"%f小时前",timeInterval/ 60 / 60);

//       }

 

        // NSDateFormatter

       //  当前类以及父类都没有初始化方法,用的是NSObject的初始化方法

 

     //  NSDateFormatter *format =[[NSDateFormatteralloc]init];

 

       //设置格式

//       // (英文字母)固定格式yyyy MM dd HH mm ss

//       [formatsetDateFormat:@"yyyy-MM-dd-HH-mm-ss"];

//

//       //根据格式将字符串转化为时间

//       NSDate *date = [format dateFromString:@"2015-11-13-11-49-24"];

//       NSLog(@"%@",date);

//       

//       // 根据格式将时间转换为字符串

//       NSString *str = [format stringFromDate:date];

//          NSLog(@"%@",str);

 

//       //  将字符串@“2014年05月01日10点23分18秒”转换为NSDate对象。

//       NSString *str = @"2014年5月01日 10点23分18秒";

//       NSDateFormatter *format =[[NSDateFormatteralloc]init];

//       [format setDateFormat:@"yyyy年MM月dd日 HH点mm分ss秒"];

//       NSDate *date = [format dateFromString:str];

//       NSLog(@"%@",date);

 

         //category

NSString *str = @"dota";

       // 给分类添加的方法发送消息

       [strplayDota];

 

       //  category: 1、可以添加方法:方法既可以被当前类使用,也可以被子类使用;  2、分类不可以添加实例变量。

          // *** 3、一般为没有  .m  的类添加方法。 ***

 

       //   inherit: 1、可以添加实例变量以及方法,但是添加的方法以及实例变量只能被自己以及子类使用,不能被父类使用。

NSDate *date = [NSDatedateWithDateString:@"20140402142850"];

NSLog(@"%@",date);

 

 

       // extension

       // 延展用来管理类的私有方法,这个类程序员必须拥有 .h 和 .m 文件

       // 延展的作用:符合OC的三大特征之封装特性,使程序员更好的使用这个类。

       Person *p = [[Person alloc] initName:@"cook"];

       //[p cook];

 

 

        // 协议和代理

        //  1、首先需要些一个协议,协议是声明方法(分为必须实现和选择实现),因此只有。文件

         //  2、签订协议需要两个对象(委托方,代理人),委托方不想做的事情通过协议交给代理人去做。

           //  3、代理人必须遵守协议,且实现协议里的方法

 

 

 

    }

return 0;

}

 

 

 

// 分类不可以添加实例变量

// 为字符串类添加方法

//  Category

// NSDate+ChangeString.h

#import<Foundation/Foundation.h>

 

@interfaceNSDate (ChangeString)

 

+ (NSDate *)dateWithDateString:(NSString*)string;

@end

 

 

 

#import"NSDate+ChangeString.h"

 

@implementationNSDate (ChangeString)

 

+ (NSDate *)dateWithDateString:(NSString*)string{

 

NSDateFormatter *format =[[NSDateFormatteralloc]init];

   [formatsetDateFormat:@"yyyyMMddHHmmss"];

NSDate *date = [format  dateFromString:string];

return date;

}

@end

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值