LessonClassExtension

来源:互联网 发布:一元淘宝网 编辑:程序博客网 时间:2024/06/05 02:41
NSDate,日期类 格式:年-月-日 时:分:秒 时区
NSDate *date = [NSDate date];
NSLog(@“%@“, date);
NSTimeInterval:时间的计算单位,秒,实质是double
常用基本函数:dateWithTimeIntervalSinceNow
timeIntervalSinceDate两个时间间隔多少秒
时间戳:某一时刻距离1970年1月1日的秒数
NSTimeInterval interval1 = 1425956371;
NSDate *date4 = [NSDate dateWithTimeIntervalSince1970:interval1]; NSLog(@"%@", date4);
NSDateFormatter:日期格式; 用来设置日期的格式
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@“YY/MM/dd HH:mm:ss”];
设置日期格式: yyyy/YYYY:四位的年份 yy/YY:两位年份
MM:两位月份,不足补0,M一位月份 注:月份必须大写(月份和分是MM于mm所以大小写要注意)
dd:两位日期,不足补0,d是一位天数,天数必须小写,大写表示当前天数是这一年中的第几天
hh:两位12进制小时,不足补0
HH:两位24进制小时,不足补0
H:一位24进制小时
注:分钟必须小写
ss:两位秒数,不足补0 注:秒数必须小写
设置时区 NSTimeZone:时区类
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@“郑州”];
这都是NSDateFormatter的方法
把某一时刻的日期,按照规定好的格式,转换成字符串
NSString *string  = [formatter stringFromDate:[NSDate dateWithTimeIntervalSinceNow:2 * 60 * 60]];
NSLog(“%@“, string);
将字符串@“2014年05月01日 10点23分18秒”转换成nsDate对象
NSDateFormatter *date5 = [[NSDateFormatter alloc]init];
[date5 setDateFormat:@“YYYY年MM月dd日 HH点mm分ss秒”];
[date5 setTimeZone:[NSTimeZone timeZoneWithName:@“GMT”]];
NSDate *newDate = [date5 dateFromString:@“2014年05月01日 10点23分18秒”];
类的扩充
1.对于已知类(可以查看.m文件)进行扩充 修改类的源文件
2.对于未知类(不能查看.m文件)进行扩充
a.继承(子类化),子类可以重写父类的方法,扩充自己的方法
b.Category,分类,类目
文件名:类名+分类名.h, 类名+分类名.m
使用分类为未知类进行扩充的步骤
1.新建文件 
2.选择objective - c file模板
3.填写分类名,选择category,选择要扩充的类
4.在.h中写方法声明,在.m中写方法实现
5.引入头文件,使用扩充方法
注:分类 1.一般用于对系统进行扩充方法 2.方法中不能添加实例变量
Extension:延展,为类扩充私有方法声明,实例变量
文件:类名_延展名.h
延展的两种方法
1.通过模板创建.h,然后在.m中引用
注:这种写法的弊端,如果你把.h引入到其他文件,在其他文件中也可以调用方法
2.直接写在.m中,写法
@interface 类名() {
实例变量;

私有方法声明;
@end
protocol:协议 (创建协议的时候不需要选择类)
遵守协议用<>,写在@interface,父类的后面
boy类中要遵守JoinUs协议
#import "JoinUs.h"
@interface Boy : NSObject<JoinUs>

delegate:代理
找代理的类
1.制定协议
2.添加代理实例变量 注id<协议名>
3.为实例变量写setter方法
想要成为代理的类
1.遵守协议
2.实现协议中必须实现的方法
代理是一一对应的关系
e.g.:创建一个woman类设置一个代理 
Woman.h中
#import <Foundation/Foundation.h>
#import "JoinUs.h"
@interface Woman : NSObject
{   //基于类型的限定
    id<JoinUs> delegate;
}
- (void)setDelegate:(id)aDelegate;
- (void)goWork;
- (void)makeFood;
- (void)takeCareOfChildren;

Woman.m文件中
#import "Woman.h"
@implementation Woman
- (void)setDelegate:(id)aDelegate {
    delegate = aDelegate;
}
//必须自己做
- (void)goWork {
    NSLog(@"工作");
}
- (void)makeFood {
    [delegate canMakeFood];
}
- (void)takeCareOfChildren {
    [delegate canTakeCareOfChildren];
}
protocol协议JoinUs.h中
@protocol JoinUs <NSObject[CDATA[]]>
- (void)canMakeFood;
- (void)canTakeCareOfChildren;
//默认为@required 就是在代理类的.m中必须实现的方法
//@optional为可选的,可以不用实现
@end
代理类boy.h如下
#import <Foundation/Foundation.h>
#import "JoinUs.h"
@interface Boy : NSObject<JoinUs>

@end
boy.m中要写协议中的方法实现部分
#import "Boy.h"
@implementation Boy

- (void)canMakeFood {
    NSLog(@"做饭");
}
- (void)canTakeCareOfChildren {
    NSLog(@"辅导功课");
}
@end

0 0
原创粉丝点击