Foundation框架下的常用類

2021-07-04 18:51:34 字數 4082 閱讀 7199

【欄位的許可權】

【注】在類中宣告字段,可以為字段新增許可權

@private 私有許可權

@protected 保護許可權

@public 公有許可權

@inte***ce father : nsobject

@end

father->d = 9;

//保護成員,被繼承了,仍然是保護成員

//公有成員,被繼承了,仍然是公有成員

【注】//實際工作中,根本不需要使用許可權,都使用預設的保護許可權就可以了。

//如果你想要成員變數被外部函式訪問,宣告成屬性。

//如果你想變數不被子類繼承,不對外公開。宣告在實現裡。

@implementation father

【方法的許可權】

【注】//oc中成員方法都是公有的,可以被繼承,可以被外部方法訪問。

//沒有在介面中做宣告的方法,這個方法不能被外部函式直接訪問。

//通過不宣告(或者僅在匿名類別中宣告),我們模擬了私有方法,這個過程,有時被稱為方法的私有化。

【注】下面情況,方法私有化不成功

1.父類公有的方法,子類重寫,即使子類不宣告,方法也是公有的。

2.在協議中宣告的方法,遵從協議的物件,即使不宣告,只實現,方法也是公有的

【另】方法的私有化,宣告即外露,不宣告即不外露,本沒什麼可記的。但是面試經常會被問到:oc能實現私有方法嗎?可照上述方式回答。

【nsnumber】

【注】繼承自c語言的基礎變數型別(int, char, float等)不能被新增到陣列和字典等oc專有的資料結構中。使用不方便,也不能通過新增類別等oc專有語法,進行管理。

【注】可以先將基礎型別資料,存入nsnumber物件,再將nsnumber物件存入陣列或字典中。

【另】可以認為,nsnumber是基礎變數型別資料,轉成物件資料的類。

【見day8-nsnumber-1】

【掌握】

nsnumber * num = @6;

- (char)charvalue;

- (id)initwithchar:(char)value;

+ (nsnumber *)numberwithchar:(char)value;

- (nscomparisonresult)compare:(nsnumber *)othernumber;

- (bool)isequaltonumber:(nsnumber *)number;

【nsvalue】

【注】nsvalue是nsnumber的父類,可以儲存任何型別的資料,包括復合資料型別(陣列,指標,結構體等),甚至是物件。

【day8-nsvalue-1】

//原生方法

- (void)getvalue:(void *)value;

- (const char *)objctype

//初始化或類方法

- (id)initwithbytes:(const void *)value objctype:(const char *)type;

+ (nsvalue *)valuewithbytes:(const void *)value objctype:(const char *)type;

+ (nsvalue *)value:(const void *)value withobjctype:(const char *)type;

//訪問物件的方法(了解)

+ (nsvalue *)valuewithnonretainedobject:(id)anobject;

- (id)nonretainedobjectvalue;

//比較兩個value物件是否相等(了解)

- (bool)isequaltovalue:(nsvalue *)value;

【注】nsvalue和nsnumber也是工廠類,不能被繼承

//nsstring是工廠類,是一堆類,共享乙個名字。根據不同的建立方式,會得到不同類的物件。

//例如:有乙個動物類,可以建立貓,和狗,和其他動物。

【nsdate】

【注】nsdate是時間類,可以建立乙個時間點的物件。

【另】物件導向程式講究一切事物皆物件,無論是具象事物還是抽象事物。

+ (id)date;
返回系統時間 以格林威治時間(gmt)為準

+ (id)datewithtimeintervalsincenow:(nstimeinterval)secs;

返回以當前時間為基準,然後過了secs秒的時間

+ (id)datewithtimeintervalsincereferencedate:(nstimeinterval)

secs;

返回以2001/01/01 gmt為基準,然後過了secs秒的時間

+ (id)datewithtimeintervalsince1970:(nstimeinterval)secs;

返回以1970/01/01 gmt為基準,然後過了secs秒的時間

- (nstimeinterval)timeintervalsincenow;

以當前時間(now)為基準時間,返回例項儲存的時間與當前時間(now)的時 間間隔

- (nstimeinterval)timeintervalsince1970;

以1970/01/01 gmt為基準時間,返回例項儲存的時間與1970/01/01 gmt 的時間間隔

- (nstimeinterval)timeintervalsincereferencedate;

以2001/01/01 gmt為基準時間,返回例項儲存的時間與2001/01/01 gmt 的時間間隔

+ (id)distantfuture;

返回很多年以後的未來的某⼀一天。 比如你需要⼀乙個比現在(now)晚(大)很長時間的時間值,則可以呼叫該方法。

+ (id)distantpast;

返回很多年以前的某⼀一天。

比如你需要⼀乙個比現在(now)早(小)大很長時間的時間值,則可以呼叫該方 法。

- (id)addtimeinterval:(nstimeinterval)secs;

返回以目前的例項中儲存的時間為基準,然後過了secs秒的時間

【nstimezone】

【注】時區類,用於時區轉換

+ (nstimezone *)systemtimezone;

//返回當前系統時區

+ (nsdictionary *)abbreviationdictionary;

//返回timezone支援時區的鍵值對

+ (id)timezonewithabbreviation:(nsstring *)abbreviation;

//通過傳入鍵值對的鍵,建立對應的時區物件。

【nsdateformatter】

【注】時間戳,用於顯示時間

//建立時間戳

nsdateformatter * dateformatter = [[nsdateformatter alloc] init];

//使用時間戳的目的,是為了自定義時間的列印格式

dateformatter.dateformat = @"yyyy年mm月dd日 hh:mm:ss.s";

//後設定會頂替原設定

dateformatter.dateformat = @"yy-mm-dd ahh時mm分ss秒";

//設定時區,如果不設,預設是系統時區

dateformatter.timezone = [nstimezone timezonewithabbreviation:@"cst"];

//根據風格,返回時間列印的字串

nslog(@"%@", [dateformatter stringfromdate:date]);

【nsnull】

【注】表示空的事物有四個

【null】【nil】【nil】【nsnull】

null:表示基礎型別指標為空

int * p = null;

nil:表示物件指標為空

id obj = nil;

nil:表示class變數為空

class class = nil;

nsnull:用在陣列字典等資料結構中佔位,作為空元素

//唯一方法

[nsnull null]; 建立表示空的物件

Foundation框架下的基本類

功能 將oc和c語言當中的基本資料型別轉換成例項物件 oc中的字串具有強大的功能,即封裝性極強,我們只需要找到相應的api,就可以對字串做相應操作。oc中字串分為 不可變字串 和 可變字串 其中 可變字串 是 不可變字串 的子類。在ios開發中 字串通常用作顯示文字,即作為 uilable uite...

Foundation框架 集合

foundation框架 集合 一 nsarray和 nsmutablearray 一 nsarray不可變陣列 1 nsarray的基本介紹 nsarray是 oc中使用的陣列,是物件導向的,以物件導向的形式操縱物件,是不可變陣列。c語言陣列有乙個缺點即陣列中只能存放同種資料型別的元素。oc陣列只...

Foundation框架 集合

foundation框架 集合 一 nsarray和 nsmutablearray 一 nsarray不可變陣列 1 nsarray的基本介紹 nsarray是 oc中使用的陣列,是物件導向的,以物件導向的形式操縱物件,是不可變陣列。c語言陣列有乙個缺點即陣列中只能存放同種資料型別的元素。oc陣列只...