簡述
本文主要探究使用OC作為iOS開發(fā)語言時(shí)琳拭,我們能使用哪些數(shù)據(jù)類型训堆。
一切類型始于C。
C語言的類型
基本數(shù)據(jù)類型:
基本數(shù)據(jù)類型(fundamental data types)也叫原始數(shù)據(jù)類型(primitive data types)
整型白嘁、字符型坑鱼、浮點(diǎn)型、枚舉型
枚舉型在計(jì)算機(jī)內(nèi)部以 int 類型存儲
除了基本數(shù)據(jù)類型絮缅,C還有
構(gòu)造類型:
數(shù)組類型, 結(jié)構(gòu)體類型(struct), 共用/聯(lián)合體類型(union)
union一般在對單片機(jī)等內(nèi)存比較小的設(shè)備進(jìn)行編程時(shí)才使用鲁沥。
指針類型:
data_type *pointer_name
由于指針在實(shí)質(zhì)上是一個(gè)內(nèi)存地址,內(nèi)存地址的長度跟CPU的尋址有關(guān)(與data_type無關(guān))
所以在32位系統(tǒng)上耕魄, 指針占據(jù)4個(gè)字節(jié)画恰;在64位系統(tǒng)上,指針占據(jù)8個(gè)字節(jié)
空類型(void):
空類型一般用于函數(shù)的返回值吸奴,表示不需要返回任何類型允扇。
由于void類型只是一個(gè)抽象概念,并不會(huì)存在于內(nèi)存中则奥,自然就沒有字節(jié)占用考润。
有了類,世間萬物皆可定義读处。
OC語言類型
由于Objective-C是C語言的嚴(yán)格超集糊治,因此以上的數(shù)據(jù)類型也是OC數(shù)據(jù)類型。
相比于C
OC是一門面向?qū)ο笳Z言档泽,如同C++一樣支持用戶定義類型(class)俊戳。
用戶定義類型為Cocoa框架的誕生提供了可能。
類型越來越復(fù)雜馆匿,代碼越來越簡潔抑胎。
iOS數(shù)據(jù)類型
一般而言,我們所說的數(shù)據(jù)類型/基本數(shù)據(jù)類型都是指一門語言的渐北。
iOS數(shù)據(jù)類型?=?C數(shù)據(jù)類型 + Cocoa類
iOS數(shù)據(jù)類型不是一種嚴(yán)謹(jǐn)?shù)慕蟹ò⑻樱瑢?shí)際上指的是C數(shù)據(jù)類型加上Cocoa框架集合(Foundation、UIKit等)中定義的的數(shù)據(jù)類型赃蛛,也即Cocoa類(泛指所有基于Objective-C運(yùn)行時(shí)且派生自根類NSObject的類)恃锉。
Foundation框架中定義的NSObject類是iOS中最重要的數(shù)據(jù)類型,用戶定義的類都需要繼承自它從而獲得調(diào)用iOS系統(tǒng)資源的能力呕臂。Foundation中還有一個(gè)重要的集合(Collection)概念破托,其包含了NSArray、NSSet歧蒋、NSDictionarry以及各自的可變類型土砂;此外州既,還有NSString、NSMutabString萝映、NSNumber等重要的類型吴叶。以上提及的類型均繼承自NSObject,是用戶定義類型(class)而并非構(gòu)造類型(struct)序臂,它們在被賦值或者被傳入函數(shù)或者方法時(shí)蚌卤,不會(huì)發(fā)生值拷貝,而是傳遞現(xiàn)有實(shí)例的引用奥秆。
總結(jié)
注:由于在iOS中BOOL實(shí)際上是signed char類型的重命名逊彭,NSInteger等也大同小異,因而并沒有將它們歸為新的類型吭练。