OC7- 类目,延展 协议代理。
目标: **. 日期类和其他的配合使用类
****. 类目,延展 category/extention。
*****.协议代理。
1.日期类:NSDate,
(1)oc中表示用的日期和时间,用的是nsdate,
(2)日期在计算机中存储的是按照0时区来存储的。
(3)日期类是通过存储1970年到现在的秒数,然后再计算当前时间的。
2.初始化,默认是按照0时区存储的。NSDate *date1=[NSDate dateWithTimeIntervalSinceNow:-2*60*60];
(1)在初始化的时候, 设置时间便宜差,可正可负,正式加,负是减,
(2)nstimeinterval用于存储时时间秒数差的变量,
(3)在作为参数传递的时候,尽量以乘法表达式的形式书写。
3.nsdate的方法,求两个日期对象的时间差,
NSDate *aimdate=[NSDate dateWithTimeIntervalSinceNow:-2*60*60];
NSTimeInterval cha1=[aimdate timeIntervalSinceDate:[NSDate date]];
4.nsdateFormater日期格式转换类。
(1)初始化 [alloc init]
(2)设置格式串 setdateformat
(3) [格式 stringfromdate date1] 注意1:非系统提供的转换符,会导致字符串的转换终止,
(4)通过format 将字符串转化为nsdate。 注意2.formatter 将date转换成string 会自动进行时区的偏移转换,加8时区,再讲srting转换成date 的时候,也会进行时区的偏移转换,即-8个时区,
NSDateFormatter *ndf=[[NSDateFormatter alloc]init];
[ndf setDateFormat:@"现在时间:yyyy年MM月dd日 HH点mm分ss秒"];
1) NSDate *now=[NSDate date];
NSString *datestr=[ndf stringFromDate:now];
2)NSString *str=@"现在时间:2015年9月28日 11点00分00秒";
NSDate *aimdate=[ndf dateFromString:str];
5.类目 category,类的目录,
(1)作用是,给没有源代码的类,添加新的方法,
(2)注意,通常的情况下,文件的名字是 :目标类名+要添加的方法名的缩写。
(3)其声明和原类是一样的,只是后面没有继承符号,被(类目的名字)替换。
(4)类目在实际开发中的意思,开发第三方,团队分工,完善特定的需求。减少代码冗余,
(5)category是直接编译到原文件的,写完之后,其子类也拥有其方法。
6.延展:都是给类进行扩充,书写的格式也类似,
(1)声明 和类的声明,还有类目的声明很像,类名+(),()内没有名字。
(3)在一个类的实现文件里,声明属性和方法,Extension针对的是⾃自⼰己的类,必须有源代码的类
(2)作用,给自己定义的类,添加完全私有的实例变量,
7..协议:
一方制定协议,另一方选择是否接受。制定的规矩就是协议,接受协议的就是代理。
(1)在制定协议的类,.h中,@protocol 开始,以@end 结束。
@protocol MarryProtocol <NSObject>
方法声明
@end
接受协议:(1) 在类的.h文件 父类名后写上《协议名》
(2)实现协议。在.m⽂文件中实现协议中的⽅方法。
调用代理的方法:
@optional;规定下面的方法在代理中可选实现。
@required:默认的是required,必须实现