12.31日 上课笔记:关于 NSDate 类目 协议 延展

=============================NSdate========================================

跟时间有关的一个类。

基本方法:

NSDate  *nowDate = [NSDate date];//获得当前时间

NSDate *tomorrow = [NSDate dateWithTimeInterval:24*60*60 sinceDate:nowDate];//从到当前时间到24*60*60秒以后的时间,就是明天的这个时间

NSTimeInterval(时间秒)time = [nowDate timeIntervalSinceDate:(一个时间点)]  从一个时间点到nowDate这个时间点有多少时间。  

重要方法 实现时间与字符串之间的互转

时间转字符串(在UI里只有字符串才能有显示)  设置时间格式  

 NSDateFormatter *dateFormatter = [[NSDateFormatter  alloc]init];

    [dateFormatter setDateFormat:(时间格式:eq:yyyy-MM-dd HH:mm:ss)];

[dateformatter stringFromDate:(时间)];//时间就会根据yyyy-MM-dd HH:mm:ss进行字符串的输出

 

字符串转时间 设置时间格式跟以上相同

NSDateFormatter *dateFormatter = [[NSDateFormatter  alloc]init];

    [dateFormatter setDateFormat:(时间格式:eq:yyyy-MM-dd HH:mm:ss)];

[dateformatter setDateFormat:(字符串)];//注意:(这里字符串的格式要跟设置的时间格式一致,不然会导致时间无法输出)

================================类目===============================

类目为系统内部的类,或者是没有源代码的类添加方法,不能添加实例变量

添加的方法会成为原类的一部分,子类依旧可以使用

类目的文件名为 原类名+文件名

既可以添加实例方法也可以添加类方法

一个类可以添加多个类目

========================= 延展=============================

延展是自定义类的扩展功能的

 在类的.m文件上方,使用@interface关键字 构建延展

 在延展中,我们既可以声明方法,也可以声明实例变量(但是在类外就不能使用,只能作为类内使用)

 并且新添加的动向属于本类的私有变量(言外之意就是类外就不能使用,只能作为类内使用)

==========================协议==========================

协议上课老师讲的比较乱,没有做什么笔记,尝试用自己语言组织记录

协议有三个部分:委托方 协议方 协议

协议是写在委托方点h文件中一堆方法的声明格式如下

 

@protocol MarryProtocol <NSObject>

 

@required

 

-(void)washClothes;

 

-(void)makeMoney;

 

-(void)doHousework;

 

-(void)cookDinner;

 

@optional

 

-(void)takeCareBaby;

 

@end

@required修饰的是必须完成的内容

@optional修饰的是不是必须完成的内容 MarryProtocol是协议名字

当在点h文件中必须声明一个代理对象属性

@property (nonatomic,assign)id<MarryProtocol>delegate;

id表示的是可以不同中类型的代理方来代理执行这些方法

 在委托方中的点m文件中。当执行某个方法时,委托方就会让代理方完成这个方法:eq:当委托方衣服脏了的时候执行衣服脏了方法时,就会判断代理方是否存在是否可以完成洗衣服这个协议,如果可以就让代理方执行洗衣服这个方法:如果程序

 

-(void)clothesDirty{

 

    if (self.delegate != nil  && [self.delegate respondsToSelector:@selector(washClothes)]) {

 

        //代理对象不为空,而且代理对象实现了协议方法,才能让代理对象执行该方法。否则什么都不执行。

 

        [self.delegate washClothes];

 

    }

 

}//衣服脏了

 

代理方中 必须在自己的点h文件,引入委托方头文件并且遵循协议:

eq:

#import "委托方头文件"

@interface Man : NSObject<MarryProtocol>

并且在点m文件中完成协议中必须完成的方法。

 

 

 

原文地址:https://www.cnblogs.com/naizui/p/5092566.html