九.類和結(jié)構(gòu)體/Classes and Structures

結(jié)構(gòu)體是通用的,靈活的構(gòu)造,成為程序代碼的基礎(chǔ)枉层。您可以通過使用與常量,變量和函數(shù)完全相同的語法來定義屬性和方法來向類和結(jié)構(gòu)添加功能赐写。

與其他編程語言不同鸟蜡,Swift不需要為自定義類和結(jié)構(gòu)創(chuàng)建單獨(dú)的接口和實(shí)現(xiàn)文件。在Swift中挺邀,您可以在單個(gè)文件中定義一個(gè)類或結(jié)構(gòu)揉忘,并且該類或結(jié)構(gòu)的外部接口將自動(dòng)使其他代碼可用

1,基本語法

類與結(jié)構(gòu)體
初始化

1.結(jié)構(gòu)類型的成員初始化器

所有結(jié)構(gòu)都有一個(gè)自動(dòng)生成的成員初始化器,您可以使用它來初始化新結(jié)構(gòu)實(shí)例的成員屬性端铛∑可以通過名稱將新實(shí)例的屬性的初始值傳遞給成員初始化器,與結(jié)構(gòu)不同,類實(shí)例不接收默認(rèn)成員初始化器

結(jié)構(gòu)體的初始化

2.結(jié)構(gòu)和枚舉是價(jià)值類型Value Types

您實(shí)際上一直在使用價(jià)值類型禾蚕。事實(shí)上您朽,Swift整數(shù),浮點(diǎn)數(shù)换淆,布爾值哗总,字符串,數(shù)組和字典中的所有基本類型都是值類型倍试,并被實(shí)現(xiàn)為后臺(tái)結(jié)構(gòu)讯屈。

所有結(jié)構(gòu)和枚舉都是Swift中的值類型。這意味著您創(chuàng)建的任何結(jié)構(gòu)和枚舉實(shí)例以及它們作為屬性的任何值類型在代碼中傳遞時(shí)總是被復(fù)制

cinema值改變不影響hd
枚舉與結(jié)構(gòu)體一樣,也屬于值類型Value Types

3.類是引用類型Reference Types

與值類型不同县习,當(dāng)引用類型被分配給變量或常量或?qū)⑵鋫鬟f給函數(shù)時(shí)涮母,不會(huì)復(fù)制引用類型。而不是復(fù)制躁愿,而是使用對相同現(xiàn)有實(shí)例的引用叛本。

與值類型相對應(yīng)的是指引用類型

引用類型,與值類型不同,賦值的過程不是拷貝,而是指針指向,存儲(chǔ)的是某個(gè)對象/實(shí)例的地址,所以當(dāng)幾個(gè)對象指向同一個(gè)實(shí)例的時(shí)候,改變其中一個(gè),其他的也會(huì)改變

tenEighty與alsoTenEighty指向同一塊內(nèi)存(值)

注意:另外,tenEighty與alsoTenEighty,初始化為let/常量,但是還會(huì)可以改變他們的屬性,因?yàn)閷?shí)際改變的是它們指向的內(nèi)存的值的改變,而它們指向的這塊內(nèi)存的地址并沒有發(fā)生變化...

4.對象相同

兩個(gè)對象是否指向同一塊地址

有時(shí)可以找出兩個(gè)常量或變量是否與類完全相同的實(shí)例。為了實(shí)現(xiàn)這一點(diǎn)攘已,Swift提供了兩個(gè)身份運(yùn)營商:

(===)

(!==)

請注意炮赦,“與...相同”(由三等于符號(hào)表示===)并不意味著與“等于”(由兩個(gè)等號(hào)或以下代表==)相同的內(nèi)容:

=== : “相同”意味著類類型的兩個(gè)常量或變量指的是完全相同的類實(shí)例。

==:“等于”意味著兩個(gè)實(shí)例被視為“相等”或“等價(jià)”的價(jià)值样勃,對于類型設(shè)計(jì)者定義的“相等”的某些適當(dāng)含義吠勘。

5.選擇結(jié)構(gòu)體還是類

您可以使用類和結(jié)構(gòu)來定義用作程序代碼構(gòu)建塊的自定義數(shù)據(jù)類型性芬。

但是,結(jié)構(gòu)實(shí)例總是通過傳遞剧防,并且類實(shí)例總是通過引用傳遞植锉。這意味著它們適合于不同類型的任務(wù)。當(dāng)您考慮項(xiàng)目所需的數(shù)據(jù)結(jié)構(gòu)和功能時(shí)峭拘,請決定是否將每個(gè)數(shù)據(jù)結(jié)構(gòu)定義為一個(gè)類或一個(gè)結(jié)構(gòu)

選擇結(jié)構(gòu)體的一般原則:

1.該結(jié)構(gòu)的主要目的是封裝一些相對簡單的數(shù)據(jù)值俊庇。

2.在分配或傳遞該結(jié)構(gòu)的實(shí)例時(shí),期望封裝的值將被復(fù)制而不是引用是合理的鸡挠。

3.由結(jié)構(gòu)存儲(chǔ)的任何屬性本身都是值類型辉饱,也將被預(yù)期復(fù)制而不是引用。

4.該結(jié)構(gòu)不需要從另一個(gè)現(xiàn)有類型繼承屬性或行為

6.字符串?dāng)?shù)組字典的賦值與復(fù)制 !!!!!!!與Object-C很大的不同

OC中NSString拣展,NSArray彭沼,和NSDictionary為類,而不是結(jié)構(gòu)來實(shí)現(xiàn)备埃⌒栈螅基礎(chǔ)中的字符串,數(shù)組和字典總是作為對現(xiàn)有實(shí)例的引用分配和傳遞按脚,而不是副本于毙。

swift中String,Array以及Dictionary被實(shí)現(xiàn)為結(jié)構(gòu)辅搬。這意味著當(dāng)數(shù)組(例如字符串唯沮,數(shù)組和字典)被分配給一個(gè)新的常量或變量,或者當(dāng)它們被傳遞給一個(gè)函數(shù)或者方法時(shí)被復(fù)制

結(jié)果是:["123", "456"] ["123", "456", "789", "000"]

arr1與arr2互不影響,,,這是設(shè)計(jì)比之前的好很多的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伞辛,一起剝皮案震驚了整個(gè)濱河市烂翰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蚤氏,老刑警劉巖甘耿,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異竿滨,居然都是意外死亡佳恬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門于游,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毁葱,“玉大人,你說我怎么就攤上這事贰剥∏憬耍” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長前痘。 經(jīng)常有香客問我凛捏,道長,這世上最難降的妖魔是什么芹缔? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任坯癣,我火速辦了婚禮,結(jié)果婚禮上最欠,老公的妹妹穿的比我還像新娘示罗。我一直安慰自己,他們只是感情好芝硬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布蚜点。 她就那樣靜靜地躺著,像睡著了一般吵取。 火紅的嫁衣襯著肌膚如雪禽额。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天皮官,我揣著相機(jī)與錄音,去河邊找鬼实辑。 笑死捺氢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的剪撬。 我是一名探鬼主播摄乒,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼残黑!你這毒婦竟也來了馍佑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤梨水,失蹤者是張志新(化名)和其女友劉穎拭荤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疫诽,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舅世,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奇徒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雏亚。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖摩钙,靈堂內(nèi)的尸體忽然破棺而出罢低,到底是詐尸還是另有隱情,我是刑警寧澤胖笛,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布网持,位于F島的核電站宜肉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏翎碑。R本人自食惡果不足惜谬返,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望日杈。 院中可真熱鬧遣铝,春花似錦、人聲如沸莉擒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涨冀。三九已至填硕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹿鳖,已是汗流浹背扁眯。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翅帜,地道東北人姻檀。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像涝滴,于是被迫代替她去往敵國和親绣版。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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