oc第七天:类的扩展

⼀、掌握NSDate的使⽤
NSDate是Cocoa中⽤于处理⽇期和时间的基础类,封装了某⼀给定的 时刻(含⽇期,时间,时区)。
使⽤+date⽅法获取当前时间
例如:NSDate *nowDate = [NSDate date];
注意NSLog(@“%@”,nowDate);⽆论你是哪个时区的时间,打印时总 是打印对应的0时区时间。

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的使⽤
NSDateFormatter是iOS中的⽇期格式类,功能是实现NSString和NSDate的互 转。
常⻅的时间格式化字符串有以下⼀些: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"];
NSDate转NSString
⽇期转化为字符串: NSDateFormatter*formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSString *dateString=[formatter stringFromDate: [NSDate date]];
NSString转NSDate
时间字符串转化为相对应的⽇期: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与⼦类的区别



// 类目
//    //特点: 可以给看不到实现的系统类 添加方法 并且添加使用系统类的对象或者类名直接可以调用
//    //只能加方法不能加变量
//    //类目中添加的方法相当于直接添加到系统类中,是可以被继承的

四、掌握Extension的定义和使⽤
Extension的主要作⽤是管理类的“私有”⽅法。
⾯向对象编程也叫⾯向接⼝编程。
在设计⼀个类的时候,有些⽅法需要对外公开(我们称为接⼝), 有些⽅法仅仅内部使⽤(⽐如:是某个⽅法的⼀个⼩步骤)。
Extension的功能是帮我们去管理这些内部使⽤的⽅法(“私有”⽅ 法)。
定义Extension
Extension的语法格式和Category很相似
相当于把Category的.h⽂件挪到了原始类的.m⽂件中
Extension针对的是⾃⼰的类,必须有源代码的类
xxx.m⽂件
@interface xxx (ExtensionName)
//你的⽅法列表
@end
@implementation xxx
//⽅法的实现
@end
// 延展中可以写 实例变量 方法
// 并且 是私有实例变量 方法声明
// 延展特点
// 声明是私有的方法和实例变量
// 一定要给有源代码的类 创建延展 要不毫无意义
// 并且声明的私有方法 需要区原类的.m文件中实现



五、掌握Protocol的定义和使⽤
Protocol(协议),是iOS开发中常⽤的技术。
协议是⼀套标准(⼀堆⽅法的声明),只有.h⽂件。就像⼀张任 务清单(或便利贴),上⾯写了⼀堆需要处理的事。清单交给谁, 谁就要去完成清单上规定的任务。
接受协议的对象实现协议中定义的⽅法。即:清单交给谁,谁就 要去完成清单上规定的任务。
协议中的⽅法默认是必须实现的,即@required。 关键字 @optional 修饰的⽅法是可选的,可实现 也可不实现。
遵守协议
遵守协议分两步
1、在类的.h⽂件 ⽗类名后写上<协议名>。
2、在.m⽂件中实现协议中的⽅法。
相当于给这个类添加了若干个⽅法。这个类的实例就可以调⽤这 些⽅法。
//使用协议代理的步骤
// 遵守协议
// 实现协议中的方法
// 添加代理为实例变量
// 添加设置代理对象的方法(set方法)
// 让代理干活
// main创建对象设置代理对象




六、掌握delegate的使⽤
Protocol的核⼼使⽤场景是实现delegate设计模式。
delegate(代理)。通俗的讲就是代理商,主要的任务是帮你完 成⼀些任务。



总结
NSDate是iOS中表⽰⽇期的类。
可以使⽤NSDateFormatter控制 NSString和NSDate的互转
Category能为没有源代码的类添加⽅法
Extension为类管理私有⽅法
Protocol和delegate通常联合使⽤,是iOS开发中特别常⽤。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章