一 时间类
1.NSDate 日期类 继承自 NSObject, 代表着一个时间点
初始化方法:
NSDate *date = [NSDate date];
打印出来的是0时区的时间,格林尼治时间.
2.使用 NSDate 的 dateWithTimeIntervalSinceNow方法初始化时间:
1⃣️参数为正的时候,表示是相比较0时区,未来的某个时间
2⃣️参数为负表示是相比较0时区,过去的某个时间
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:8 * 60 * 60]; 未来
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:-24 * 60 * 60]; 过去
3.时间间隔(NSTimeInterval)
用来计算时间点的时间间隔,返回值是以秒为单位的数据.
NSTimeInterval timeInterval = [tomorrow timeIntervalSinceDate:yesterdayDate];
timeIntervalSince1970:方法是现在时刻距离1970年的时间间隔
4.时间格式类(NSDateFormatter) 继承自 NSFormatter
用于把 NSDate 按照某种时间格式输出,转换为 NSString, 创建一个时间格式类对象
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
设定日期格式
[formatter setDateFormat:@“yyyy-MM-dd hh时 mm分ss秒"];
将时间对象转化为字符串
NSString *dat = [formatter stringFromDate:[NSDate date] ];
将字符串转化为日期(dateFromString:)
5.设定时区(NSTimeZone)
根据填写的名称判断时区
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@“China"];
也可以使用简写
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@“PST"];
二 类的扩展(为类添加子类)
1.Extension 对私有的方法和特征进行扩展
注意:可以对类添加实例变量
在设计一个类的时候,有些方法需要对外公开(接口),有的方法仅仅类内部使用(比如:某个方法的一个小步骤)
扩展的私有方法不能在外部被访问,只能类的内部进行访问.
三 分类或类目(Category)
主要作用是为没有源代码的类添加方法
分类的作用:在不改变类内容的基础上,可以为类增加一些方法
使用注意:
1⃣ 分类只能增加方法,不能增加成员变量
2⃣ 分类方法实现中可以访问原来类中的成员变量
3⃣ 分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法在使用
4⃣ 方法调用的优先级:现在分类中查找对应的方法,如果没有找到,再到父类中查找,分类(最后编译的分类优先)à原来类à父类
1. 给系统类添加分类
1⃣ 创建类方法,计算出字符串中的阿拉伯数字的个数
int count = 0;
+ (int)numberCountOfString:(NSString *)str{
for(int i = 0; i < str.length;i ++){
unichar c = [str characterAtIndex:i];
if( c >= ‘0’ && c<=’9’){
count++;
}
}
return count;
}
2⃣ 创建对象方法,计算出字符串中的阿拉伯数字的个数
int count = 0;
- (int)numberCount{
for(int i = 0; i < str.length;i ++){
unichar c = [str characterAtIndex:i];
if( c >= ‘0’ && c<=’9’){
count++;
}
}
return count;
}
分类中是不能添加实例变量的
category 和 extension的区别:
Extension 为已知类添加私有的实例变量和方法. Category为没有源代码的类添加类方法和实例方法
Extension 里能够添加实例变量, Category不能添加实例变量
Extension文件只有. h文件,而 Category同时生成一对.h和. m文件
Extension文件只有. h文件,而 Category同时生成一对.h和. m文件
Extension 一般不建文件,写在类的.m 文件中
四 protocol协议(**.h)
协议写在父类的后面用一堆<>括起来
在定义协议的时候使用关键字@required 和@ optional, 使用@ required 修饰的方法是必须实现的方法,@optional修饰的可以选择实现
五 协议和代理是 iOS 中比较重要的内容,后面还会进一步讲解
五 协议和代理是 iOS 中比较重要的内容,后面还会进一步讲解