=============================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文件中完成协议中必须完成的方法。