【欄位的許可權】
【注】在類中宣告字段,可以為字段新增許可權
@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陣列只...