面向?qū)ο螅ㄏ拢?/h2>

NSInteger:大致等于long型整數(shù)?

根據(jù)設(shè)備不同可能等于long可能等于int

NSUInteger:大致等于unsigned long 型整數(shù)

根據(jù)設(shè)備不同可能等于unsigned long可能等于unsigned int ?

CGFloat: 在64為平臺(tái)上大致相當(dāng)于double, 32->float

包裝類:

NSValue :代表一個(gè)更通用的包裝類,他可用于包裝單個(gè)short,int ,long ,float,char,指針,對(duì)象id等數(shù)據(jù)項(xiàng)

NSNumber:更具體的包裝類,主要用于包裝C語(yǔ)言的各種數(shù)值類型,NSNumber組要包括如下3類方法:

1.+numberWithXxx:該類防范直接將特定類型的值包裝成NSNumber

2.-initWithXxx:該實(shí)例方法需要先創(chuàng)建一個(gè)NSNumber 對(duì)象,再用一個(gè)基本類型的值來初始化NSNumber

3.-xxxValue:該實(shí)例方法返回該NSNumber對(duì)象包裝的基本類型的值

雖然OC提供類似于自動(dòng)裝箱的機(jī)制,比如,可以把一個(gè)整型值賦給NSNumber變量。但這種機(jī)制并不完善,使用自動(dòng)裝箱生成的NSNumber不支持ARC,而且不能把浮點(diǎn)數(shù)賦給NSNumber類型的變量。因此通常使用顯示轉(zhuǎn)換。

description 是NSObject類的一個(gè)實(shí)例方法,“自我描述“方法。當(dāng)程序員直接打印該對(duì)象時(shí),系統(tǒng)將會(huì)輸出該對(duì)象的”自我描述“信息,已告訴外界該對(duì)象具有的狀態(tài)信息。

重寫:

-(NSString *)description{

//自定義語(yǔ)句

}

6.2.2

測(cè)試兩個(gè)變量是否相等有兩種方式

1.一種是利用==運(yùn)算符

2、isEqaul方法

對(duì)于兩個(gè)指針類型的變量,他們必須指向同一個(gè)對(duì)象(也就是兩個(gè)指針變量保存的內(nèi)存地址相同時(shí),==判斷才會(huì)返回真當(dāng)使用==比較類型上沒有繼承關(guān)系的兩個(gè)指針變量時(shí),編譯器會(huì)提示警告。

@“hello”直接量和[NSString stringWithFormat:@"hello"]有什么區(qū)別呢?

當(dāng)OC程序直接使用形如@“hello”的字符串直接量時(shí),系統(tǒng)將會(huì)使用常量池管理這些字符串。

常量池保證字符串直接量只有一個(gè),不會(huì)產(chǎn)生多個(gè)副本。

NSString stringWithFormat:類方法創(chuàng)建的字符串對(duì)象是運(yùn)行時(shí)創(chuàng)建出來的,他被保存在運(yùn)行時(shí)內(nèi)群區(qū)內(nèi)(既堆內(nèi)存),不會(huì)放入常量池中。

如果并不嚴(yán)格要求兩個(gè)指針變量指向同一個(gè)對(duì)象,可以重寫NSString 的對(duì)象 isEqual方法來判斷 isEqual提供自定義的相等標(biāo)準(zhǔn)

isEqual 重寫標(biāo)準(zhǔn):

1.自反性:對(duì)任意x.[x isEqual:x]一定返回真

2、對(duì)稱性:對(duì)任意的x和y,如果 [y is Equal:x]返回真,則[x isEqual:y]也返回真

3.傳遞性,對(duì)任意的x,y,z

4.一致性 ?相對(duì)不變的情況下,不會(huì)再多次調(diào)用后,結(jié)果不同

5.對(duì)任何不是nil的x,[x isEqual:nil]一定返回假

除此之外,NSString 有一個(gè)isEqualToString 用于判定當(dāng)前字符串與另一個(gè)字符串的字符序列是否相等


6.4 協(xié)議(protocol) 與委托

協(xié)議不提供任何實(shí)現(xiàn),只是定義公用的方法,和擴(kuò)展相同。具體實(shí)現(xiàn)交由類完成。協(xié)議體現(xiàn)的是規(guī)范和實(shí)現(xiàn)分離的設(shè)計(jì)哲學(xué)。

@protocol 協(xié)議名<父協(xié)議1,父協(xié)議2>

{

零到多個(gè)方法定義

}

語(yǔ)法說明:

1.協(xié)議名應(yīng)與類名采用相同的命名規(guī)則,可讀性規(guī)范——協(xié)議名應(yīng)由多個(gè)有意義的單詞鏈接而成,每個(gè)單詞首字母大寫,單詞與單詞之間無須任何分隔符。

2.一個(gè)協(xié)議可以有多個(gè)直接父協(xié)議,但協(xié)議只能繼承協(xié)議,不能繼承類。

3.協(xié)議中定義的方法只有方法簽名,沒有方法實(shí)現(xiàn);協(xié)議中包含的方法即可是類方法,也可是實(shí)例方法。

為了彌補(bǔ)正式協(xié)議的靈活性不足:

OC 2.0新增

@optional ?位于該關(guān)鍵字之后,@required或@end之前生命的方法是可選的——實(shí)現(xiàn)類可選擇實(shí)現(xiàn)這些方法。

@required 位于該關(guān)鍵字之后,@optional或@end之前生命的方法是必須的,如果為實(shí)現(xiàn)這些方法,編譯器就會(huì)發(fā)出提示警告,為默認(rèn)行為。


6.6.1 獲得Class

每個(gè)類都有一個(gè)對(duì)應(yīng)的Class,獲取方式通常為三種:

1.使用Class NSClassFromString(NSString * aClassName)函數(shù)獲取Class,該函數(shù)需要出入字符串參數(shù),該字符串參數(shù)的值是某個(gè)類的類名

2、調(diào)用類的class方法 ? ?有優(yōu)勢(shì) ?更安全,編譯階段便可檢查,性能更高,因無須調(diào)用方法

調(diào)用某個(gè)對(duì)象的class方法,此為NSObject類的一個(gè)方法,返回對(duì)象所屬類的class

獲取協(xié)議:

Protocol *NSProtocolFromString(NSString *namestr);

OC把方法稱為選擇器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容