您好,登錄后才能下訂單哦!
NSDate的使用
NSDate是Cocoa中用于處理日期和時(shí)間的基礎(chǔ)類,封裝類某一給定的時(shí)刻,具體的日期,時(shí)間和時(shí)區(qū)
使用+date方法獲取當(dāng)前日期和時(shí)間
例如 :NSDate*nowDate = [NSDate date];
注意,,NSLog(@“%@”,nowDate); 無(wú)論你是哪個(gè)時(shí)區(qū)的時(shí)間,打印時(shí)間,打印時(shí)總是打印對(duì)應(yīng)的0時(shí)區(qū)時(shí)間
NSTimeinterval
NSTimeInterval(即double類型) 用以表示以秒為單位的時(shí)間間隔
可以使用-initWithTimeIntervalSinceNow:方法傳入一個(gè)NSTimeInterval參數(shù),創(chuàng)建一個(gè) NSDate對(duì)象
例如:NSDate * tomorrowDate = [[NSDate alloc] initWithTimeIntervalSinceNow:24*60 * 60];
NSDate * yesterdayDate = [[NSDate alloc] initWithTimeIntervalSinceNow:-1 * 24*60 *60];
取兩個(gè)時(shí)間對(duì)象的間隔:NSTimeinterval = [tomorrowDate timeIntervalSinceDate:yesterdayDate];
NSDateFormatter的使用
1.
NSDateFormatter是iOS中的日期格式類,主要的功能是實(shí)現(xiàn) 代表日期的NSString和
SDate的互轉(zhuǎn),提供了系統(tǒng)預(yù)置的字符串格式,還允許用戶自定義字符串格式。 我們可以設(shè)置時(shí)區(qū)、月的名稱、紀(jì)元的符號(hào)、local、calender、AM/PM、weekday的符號(hào)
常見(jiàn)的時(shí)間格式化字符串有以下一些:y 年、 M 年中的月份 、d 月份中的天數(shù)、 H 一
中的小時(shí)數(shù)(0-23)、 h am/pm 中的小時(shí)數(shù)(1-12)、m 小時(shí)中的分鐘數(shù) 、s 分鐘中的秒數(shù)
指定日期格式: NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
2.
NSDateFormatter可以將日期轉(zhuǎn)化為相對(duì)應(yīng)的字符串,同樣可以將字串轉(zhuǎn)化為相對(duì)應(yīng)的日期。
日期轉(zhuǎn)化為字符串: NSDateFormatter*formatter =NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSString *dateString=[formatter stringFromDate: [NSDate date]];
3.
時(shí)間字符串轉(zhuǎn)化為相對(duì)應(yīng)的日期: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也叫分類或類目
主要作用是為 沒(méi)有源代碼 的類添加方法。
通過(guò)Category添加的方法會(huì)成為原類的一部分。從而達(dá)到擴(kuò)展一 類的功能。
Category的定義
新建文件
選擇Objective-C Category模板
填寫類名和分類名
.h文件添加方法聲明
.m添加方法實(shí)現(xiàn)
需要使用的地方進(jìn)行調(diào)用。
Category的聲明
NSString+SayHi.h文件
@interface NSString (SayHi)
- (void)hi;
@end
Category的實(shí)現(xiàn)
NSString+SayHi.m文件
#import “NSString+SayHi.h”
@implementation NSString(SayHi)
- (void)hi{
NSLog(@”這是通過(guò)category為NSString添加的hi方法”);
}
@end
Category與子類的區(qū)別
Extension
Extension的主要作用是為類添加“私有”方法。
面向?qū)ο缶幊痰牧硗庖粋€(gè)名字叫面向接口編程。
我們?cè)谠O(shè)計(jì)一個(gè)類的時(shí)候,有些方法需要對(duì)外公開(kāi)(我們稱為接口),有些方法可能僅僅內(nèi)部使用(比如:是某個(gè)方法的一個(gè)小步驟)。
Extension的功能是幫我們?nèi)ス芾磉@些內(nèi)部使用的方法(“私有”方 法)。
定義Extension
Extension的語(yǔ)法格式和Category很相似
相當(dāng)于把Category的.h文件挪到了原始類的.m文件中
Extension針對(duì)的是的類,必須有源代碼的類
定義Extension
xxx.m文件
@interface xxx (ExtensionName)
//你的方法列表
@end
Extension的實(shí)現(xiàn)
@implementation xxx
//方法的實(shí)現(xiàn)
@end
Category和Extension的區(qū)別
Protocol
Protocol又名協(xié)議,是iOS開(kāi)發(fā)中常用的技術(shù)。
協(xié)議是一套標(biāo)準(zhǔn)(一堆方法的聲明),只有.h文件。
接受協(xié)議的對(duì)象實(shí)現(xiàn)協(xié)議中定義的方法
Protocol
協(xié)議就像一張任務(wù)清單(或便利貼),上面寫了一堆需要處理的事。清單交給誰(shuí),誰(shuí)就要去完成清單上規(guī)定的任務(wù)。
協(xié)議定義好之后,需要有類去遵守這個(gè)協(xié)議,實(shí)現(xiàn)協(xié)議里面的方法。
遵守協(xié)議即在.h文件的父類名后寫上<協(xié)議名]]>。實(shí)現(xiàn)協(xié)議里的方法即在.m文件中實(shí)現(xiàn)協(xié)議中的方法。相當(dāng)于給這個(gè)類添加了若干個(gè)
方法。這個(gè)類的實(shí)例就可以調(diào)用這些方法。
定義Protocol
@protocol開(kāi)始,以@end結(jié)束,例如:
@protocol MarryProtocol <NSObject>
- (void)makeMoney;
@optional //可選的協(xié)議,
- (void)washcloth;
- (void)cook;
@end
協(xié)議中的方法默認(rèn)是必須實(shí)現(xiàn)的,即@required關(guān)鍵字 @optional 修飾的方法是可選的,可實(shí)現(xiàn)也可不實(shí)現(xiàn)。
如何遵守協(xié)議
#import “MarryProtocol”
#這里要引入?yún)f(xié)議的頭文件
@interface Boy : NSObject <MarryProtocl>
...
@end
@implementation Boy
//協(xié)議中方法的實(shí)現(xiàn)
@end
delegate設(shè)計(jì)模式
Protocol的核心使用場(chǎng)景是實(shí)現(xiàn)delegate設(shè)計(jì)模式。
delegate音譯代理。通俗的講就是代理商,主要的任務(wù)是幫你完成一些任務(wù)。
比如:保姆就可以認(rèn)為是delegate,主要的任務(wù)是幫你帶孩子、做飯、洗衣服等。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。