Swift 類和結(jié)構(gòu)體(Class And Structure)

1.來(lái)看看官方說(shuō)明類和結(jié)構(gòu)體的相同和不同:

Classes and structures in Swift have many things in common. Both can:(相同點(diǎn))

  • Define properties to store values(定義屬性來(lái)存儲(chǔ)值)
  • Define methods to provide functionality(定義提供功能的方法)
  • Define subscripts to provide access to their values using subscript syntax (定義下標(biāo)以使用下標(biāo)語(yǔ)法提供對(duì)其值的訪問(wèn))
  • Define initializers to set up their initial state (定義初始化器來(lái)設(shè)置它們的初始狀態(tài))
  • Be extended to expand their functionality beyond a default implementation (擴(kuò)展到超出默認(rèn)實(shí)現(xiàn)的功能)
  • Conform to protocols to provide standard functionality of a certain kind (符合協(xié)議提供某種標(biāo)準(zhǔn)功能)

Classes have additional capabilities that structures do not:(類具有的結(jié)構(gòu)體沒(méi)有的特點(diǎn))

  • Inheritance enables one class to inherit the characteristics of another.(繼承使一個(gè)類能夠繼承另一個(gè)類的特性牲蜀。)
  • Type casting enables you to check and interpret the type of a class instance at runtime.(類型轉(zhuǎn)換使您能夠在運(yùn)行時(shí)檢查和解釋類實(shí)例的類型蚂子。)
  • Deinitializers enable an instance of a class to free up any resources it has assigned.(取消初始化程序使類的一個(gè)實(shí)例釋放它分配的任何資源窍育。)
  • Reference counting allows more than one reference to a class instance.(引用計(jì)數(shù)允許多個(gè)對(duì)類實(shí)例的引用截亦。)

注意:
結(jié)構(gòu)在代碼中傳遞時(shí)總是被復(fù)制,而不使用引用計(jì)數(shù)晶姊。

2.類是引用類型扒接,結(jié)構(gòu)體是值類型

聲明一個(gè)結(jié)構(gòu)體和類

struct Resolution {
   var width = 0
   var height = 0
}
class VideoMode {
   var resolution = Resolution()
   var interlaced = false
   var frameRate = 0.0
   var name: String?
}
  • 初始化,結(jié)構(gòu)體會(huì)自動(dòng)生成2種初始化方法
let someResolution = Resolution()
let someResolution2 = Resolution(width: 29, height: 19)
let somVideoMode = VideoMode()
  • 值類型
    所有結(jié)構(gòu)和枚舉都是Swift中的值類型。這意味著您創(chuàng)建的任何結(jié)構(gòu)和枚舉實(shí)例(以及它們作為屬性的任何值類型)在您的代碼中傳遞時(shí)總是被復(fù)制们衙。
    如:先生成一個(gè)結(jié)構(gòu)體钾怔,在賦值另一個(gè)
let hd = Resolution(width: 1920, height: 1080)
var cinema = hd

改變cinemawidth,而hdwidth不變,當(dāng)cinema給定當(dāng)前值時(shí)hd,存儲(chǔ)在其中的值hd被復(fù)制到新cinema實(shí)例中砍艾。最終結(jié)果是兩個(gè)完全分離的實(shí)例蒂教,它們恰好包含相同的數(shù)值.這情況適合所有的值類型,枚舉脆荷,字典凝垛,數(shù)組懊悯。。梦皮。

cinema.width = 2048
print("cinema is now \(cinema.width) pixels wide")
// Prints "cinema is now 2048 pixels wide"
print("hd is still \(hd.width) pixels wide")
// Prints "hd is still 1920 pixels wide"
  • 引用類型
    聲明一個(gè)VideoMode
let tenEighty = VideoMode()
tenEighty.resolution = hd
tenEighty.interlaced = true
tenEighty.name = "1080i"
tenEighty.frameRate = 25.0

接下來(lái)炭分,tenEighty被分配一個(gè)新的常量,調(diào)用alsoTenEighty剑肯,并alsoTenEighty修改frameRate

let alsoTenEighty = tenEighty
alsoTenEighty.frameRate = 30.0

tenEighty的frameRate屬性仍為30.0捧毛,這既是引用類型

print("The frameRate property of tenEighty is now \(tenEighty.frameRate)")
// Prints "The frameRate property of tenEighty is now 30.0"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市让网,隨后出現(xiàn)的幾起案子呀忧,更是在濱河造成了極大的恐慌,老刑警劉巖溃睹,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件而账,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡因篇,警方通過(guò)查閱死者的電腦和手機(jī)泞辐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)竞滓,“玉大人咐吼,你說(shuō)我怎么就攤上這事∩逃樱” “怎么了锯茄?”我有些...
    開(kāi)封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)茶没。 經(jīng)常有香客問(wèn)我撇吞,道長(zhǎng),這世上最難降的妖魔是什么礁叔? 我笑而不...
    開(kāi)封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮迄薄,結(jié)果婚禮上琅关,老公的妹妹穿的比我還像新娘。我一直安慰自己讥蔽,他們只是感情好涣易,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著冶伞,像睡著了一般新症。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上响禽,一...
    開(kāi)封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天徒爹,我揣著相機(jī)與錄音荚醒,去河邊找鬼。 笑死隆嗅,一個(gè)胖子當(dāng)著我的面吹牛界阁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胖喳,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泡躯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了丽焊?” 一聲冷哼從身側(cè)響起较剃,我...
    開(kāi)封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎技健,沒(méi)想到半個(gè)月后写穴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凫乖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年确垫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帽芽。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡删掀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出导街,到底是詐尸還是另有隱情披泪,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布搬瑰,位于F島的核電站款票,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泽论。R本人自食惡果不足惜艾少,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翼悴。 院中可真熱鬧缚够,春花似錦、人聲如沸鹦赎。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)古话。三九已至雏吭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陪踩,已是汗流浹背杖们。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工悉抵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胀莹。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓基跑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親描焰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子媳否,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容