LessonClassExtension

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章