标签:nsdate、category 、extension、protocol
NSDate的使用
NSDate是Cocoa中用于处理日期和时间的基础类,封装类某一给定的时刻,具体的日期,时间和时区
使用+date方法获取当前日期和时间
例如 :NSDate*nowDate = [NSDate date];
注意,,NSLog(@“%@”,nowDate); 无论你是哪个时区的时间,打印时间,打印时总是打印对应的0时区时间
NSTimeinterval
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的使用
1.
NSDateFormatter是iOS中的日期格式类,主要的功能是实现 代表日期的NSString和
SDate的互转,提供了系统预置的字符串格式,还允许用户自定义字符串格式。 我们可以设置时区、月的名称、纪元的符号、local、calender、AM/PM、weekday的符号
常见的时间格式化字符串有以下一些: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"];
2.
NSDateFormatter可以将日期转化为相对应的字符串,同样可以将字串转化为相对应的日期。
日期转化为字符串: NSDateFormatter*formatter =NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSString *dateString=[formatter stringFromDate: [NSDate date]];
3.
时间字符串转化为相对应的日期: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的声明
NSString+SayHi.h文件
@interface NSString (SayHi)
- (void)hi;
@end
Category的实现
NSString+SayHi.m文件
#import “NSString+SayHi.h”
@implementation NSString(SayHi)
- (void)hi{
NSLog(@”这是通过category为NSString添加的hi方法”);
}
@end
Category与子类的区别
Extension
Extension的主要作用是为类添加“私有”方法。
面向对象编程的另外一个名字叫面向接口编程。
我们在设计一个类的时候,有些方法需要对外公开(我们称为接口),有些方法可能仅仅内部使用(比如:是某个方法的一个小步骤)。
Extension的功能是帮我们去管理这些内部使用的方法(“私有”方 法)。
定义Extension
Extension的语法格式和Category很相似
相当于把Category的.h文件挪到了原始类的.m文件中
Extension针对的是的类,必须有源代码的类
定义Extension
xxx.m文件
@interface xxx (ExtensionName)
//你的方法列表
@end
Extension的实现
@implementation xxx
//方法的实现
@end
Category和Extension的区别
Protocol
Protocol又名协议,是iOS开发中常用的技术。
协议是一套标准(一堆方法的声明),只有.h文件。
接受协议的对象实现协议中定义的方法
Protocol
协议就像一张任务清单(或便利贴),上面写了一堆需要处理的事。清单交给谁,谁就要去完成清单上规定的任务。
协议定义好之后,需要有类去遵守这个协议,实现协议里面的方法。
遵守协议即在.h文件的父类名后写上<协议名]]>。实现协议里的方法即在.m文件中实现协议中的方法。相当于给这个类添加了若干个
方法。这个类的实例就可以调用这些方法。
定义Protocol
@protocol开始,以@end结束,例如:
@protocol MarryProtocol <NSObject>
- (void)makeMoney;
@optional //可选的协议,
- (void)washcloth;
- (void)cook;
@end
协议中的方法默认是必须实现的,即@required关键字 @optional 修饰的方法是可选的,可实现也可不实现。
如何遵守协议
#import “MarryProtocol”
#这里要引入协议的头文件
@interface Boy : NSObject <MarryProtocl>
...
@end
@implementation Boy
//协议中方法的实现
@end
delegate设计模式
Protocol的核心使用场景是实现delegate设计模式。
delegate音译代理。通俗的讲就是代理商,主要的任务是帮你完成一些任务。
比如:保姆就可以认为是delegate,主要的任务是帮你带孩子、做饭、洗衣服等。
本文出自 “小刘_Blog” 博客,请务必保留此出处http://liuyafang.blog.51cto.com/8837978/1543354
Objective -C NSDate、Category 、Extension、Protocol,布布扣,bubuko.com
Objective -C NSDate、Category 、Extension、Protocol
标签:nsdate、category 、extension、protocol
原文地址:http://liuyafang.blog.51cto.com/8837978/1543354