NSDate的使用
- NSDate是Cocoa中用于处理日期和时间的基础类,封装类某一给定的时刻,具体的日期,时间和时区
- 使用+date方法获取当前日期和时间
- 例如 :NSDate*nowDate = [NSDate date];
- 注意,,NSLog(@“%@”,nowDate); 无论你是哪个时区的时间,打印时间,打印时总是打印对应的0时区时间
NSTimeinterval
- NSTimeInterval(即double类型) 用以表示以秒为单位的时间间隔
- 可以使用-initWithTimeIntervalSinceNow:方法传入一个NSTimeInterval参数,创建一个 NSDate对象
- 例如:NSDate * tomorrowDate = [[NSDate alloc] initWithTimeIntervalSinceNow:24*60 * 60];
- NSDate * yesterdayDate = [[NSDate alloc] initWithTimeIntervalSinceNow:-1 * 24*60 *60];
- 取两个时间对象的间隔:NSTimeinterval = [tomorrowDate timeIntervalSinceDate:yesterdayDate];
NSDateFormatter的使用
1.
- NSDateFormatter是iOS中的日期格式类,主要的功能是实现 代表日期的NSString和
- SDate的互转,提供了系统预置的字符串格式,还允许用户自定义字符串格式。 我们可以设置时区、月的名称、纪元的符号、local、calender、AM/PM、weekday的符号
- 常见的时间格式化字符串有以下一些:y 年、 M 年中的月份 、d 月份中的天数、 H 一
- 中的小时数(0-23)、 h am/pm 中的小时数(1-12)、m 小时中的分钟数 、s 分钟中的秒数
- 指定日期格式: NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
2.
- NSDateFormatter可以将日期转化为相对应的字符串,同样可以将字串转化为相对应的日期。
- 日期转化为字符串: NSDateFormatter*formatter =NSDateFormatter alloc] init];
- [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
- NSString *dateString=[formatter stringFromDate: [NSDate date]];
3.
- 时间字符串转化为相对应的日期:NSDateFormatter * formatter =[[NSDateFormatter alloc] init];
- [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
- NSString * dateStr = @”2008-08-08 20:08:08”; NSDate * date = [formatter dateFromString:dateStr];
类目Category
- Category也叫分类或类目
- 主要作用是为 没有源代码 的类添加方法。
- 通过Category添加的方法会成为原类的一部分。从而达到扩展一 类的功能。
Category的定义
- 新建文件
- 选择Objective-C Category模板
- 填写类名和分类名
- .h文件添加方法声明
- .m添加方法实现
- 需要使用的地方进行调用。
Category的声明
- NSString+SayHi.h文件
- @interface NSString (SayHi)
- - (void)hi;
- @end
Category的实现
- NSString+SayHi.m文件
- #import “NSString+SayHi.h”
- @implementation NSString(SayHi)
- - (void)hi{
- NSLog(@”这是通过category为NSString添加的hi方法”);
- }
- @end
Category与子类的区别
Extension
- Extension的主要作用是为类添加“私有”方法。
- 面向对象编程的另外一个名字叫面向接口编程。
- 我们在设计一个类的时候,有些方法需要对外公开(我们称为接口),有些方法可能仅仅内部使用(比如:是某个方法的一个小步骤)。
- Extension的功能是帮我们去管理这些内部使用的方法(“私有”方 法)。
定义Extension
- Extension的语法格式和Category很相似
- 相当于把Category的.h文件挪到了原始类的.m文件中
- Extension针对的是的类,必须有源代码的类
定义Extension
- xxx.m文件
- @interface xxx (ExtensionName)
- //你的方法列表
- @end
Extension的实现
- @implementation xxx
- //方法的实现
- @end
Category和Extension的区别
Protocol
- Protocol又名协议,是iOS开发中常用的技术。
- 协议是一套标准(一堆方法的声明),只有.h文件。
- 接受协议的对象实现协议中定义的方法
Protocol
- 协议就像一张任务清单(或便利贴),上面写了一堆需要处理的事。清单交给谁,谁就要去完成清单上规定的任务。
- 协议定义好之后,需要有类去遵守这个协议,实现协议里面的方法。
- 遵守协议即在.h文件的父类名后写上<协议名]]>。实现协议里的方法即在.m文件中实现协议中的方法。相当于给这个类添加了若干个
- 方法。这个类的实例就可以调用这些方法。
定义Protocol
- @protocol开始,以@end结束,例如:
- @protocol MarryProtocol <NSObject>
- - (void)makeMoney;
- @optional //可选的协议,
- - (void)washcloth;
- - (void)cook;
- @end
- 协议中的方法默认是必须实现的,即@required关键字 @optional 修饰的方法是可选的,可实现也可不实现。
如何遵守协议
- #import “MarryProtocol”
- #这里要引入协议的头文件
- @interface Boy : NSObject <MarryProtocl>
- ...
- @end
- @implementation Boy
- //协议中方法的实现
- @end
delegate设计模式
- Protocol的核心使用场景是实现delegate设计模式。
- delegate音译代理。通俗的讲就是代理商,主要的任务是帮你完成一些任务。
- 比如:保姆就可以认为是delegate,主要的任务是帮你带孩子、做饭、洗衣服等。
Objective -C NSDate、Category 、Extension、Protocol
时间: 2024-12-25 04:29:04