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把方法稱為選擇器