Swift之Struct數(shù)據(jù)模型

使用Struct作為數(shù)據(jù)模型的優(yōu)缺點(diǎn)

缺點(diǎn)

Objective-C

當(dāng)你的項(xiàng)目的代碼是 Swift 和 Objective-C 混合開發(fā)時(shí)委粉,你會(huì)發(fā)現(xiàn)在 Objective-C 的代碼里無(wú)法調(diào)用 Swift 的 Struct姻成。因?yàn)橐?Objective-C 里調(diào)用 Swift 代碼的話搬味,對(duì)象需要繼承于 NSObject。

Struct 不是 Objective-C 的好朋友。

繼承

繼承是面向?qū)ο缶幊痰乃拇笾е唬@深深地植入了我們的思維方式福稳。當(dāng)我們可以使用繼承時(shí),為什么還要重復(fù)地寫某一段代碼瑞侮?我很喜歡把我的數(shù)據(jù)模型設(shè)為可繼承的的圆,這讓我不用給共享一個(gè)抽象的類重復(fù) JSON 解析代碼,這能讓我的模型保持統(tǒng)一半火。

Struct 不能相互繼承越妈。

NSUserDefaults

我敢打包票大家都會(huì)在某些時(shí)候?qū)Π褦?shù)據(jù)存在 NSUserDefaults 里面感到有罪惡感。這種想法很正常慈缔,因?yàn)椴皇敲總€(gè)人都喜歡跟 CoreData 打交道叮称,特別是僅僅要存很少的對(duì)象的時(shí)候种玛。 技術(shù)上這是可行的藐鹤,但是要用 Struct 實(shí)現(xiàn)的話,這還有幾個(gè)小坑要踩赂韵。因此你可能最好還是用 Class 來實(shí)現(xiàn)娱节。

Struct 不能被序列化成 NSData 對(duì)象。


Struct 的優(yōu)點(diǎn)

我不希望你們認(rèn)為我不喜歡使用 Struct 是因?yàn)榻Y(jié)構(gòu)體傷了我的感情祭示。使用 Struct 來代替 Class 作為數(shù)據(jù)模型有很多好處肄满。值類型(value type)是非常有優(yōu)勢(shì)的:

  • 安全性

    因?yàn)?Struct 是用值類型傳遞的,它們沒有引用計(jì)數(shù)质涛。

  • 內(nèi)存

    由于他們沒有引用數(shù)稠歉,他們不會(huì)因?yàn)檠h(huán)引用導(dǎo)致內(nèi)存泄漏。

  • 速度

    值類型通常來說是以棧的形式分配的汇陆,而不是用堆怒炸。因此他們比 Class 要快很多,真的很多毡代!在 StackOverflow 給 struct 和 class 進(jìn)行相同操作的表現(xiàn)做了基準(zhǔn)測(cè)試阅羹,Struct 比 Class 要快九百倍勺疼。(Struct 的速度為 Class 的三千七百萬(wàn)倍)

  • 拷貝

    你有在 Objective-C 里試圖過拷貝一個(gè)對(duì)象嗎?你必須選用正確的拷貝類型(深拷貝捏鱼、淺拷貝)执庐,這是非常煩人的,因?yàn)槊看螄L試你都不記得自己上次是怎么寫的导梆。 值類型的拷貝則非常輕松轨淌!

  • 線程安全

    值類型是自動(dòng)線程安全的。無(wú)論你從哪個(gè)線程去訪問你的 Struct 看尼,都非常簡(jiǎn)單猿诸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市狡忙,隨后出現(xiàn)的幾起案子梳虽,更是在濱河造成了極大的恐慌,老刑警劉巖灾茁,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窜觉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡北专,警方通過查閱死者的電腦和手機(jī)禀挫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拓颓,“玉大人语婴,你說我怎么就攤上這事∈荒溃” “怎么了砰左?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)场航。 經(jīng)常有香客問我缠导,道長(zhǎng),這世上最難降的妖魔是什么溉痢? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任僻造,我火速辦了婚禮,結(jié)果婚禮上孩饼,老公的妹妹穿的比我還像新娘髓削。我一直安慰自己,他們只是感情好镀娶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布立膛。 她就那樣靜靜地躺著,像睡著了一般汽畴。 火紅的嫁衣襯著肌膚如雪旧巾。 梳的紋絲不亂的頭發(fā)上耸序,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音鲁猩,去河邊找鬼坎怪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛廓握,可吹牛的內(nèi)容都是我干的搅窿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼隙券,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼男应!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娱仔,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤沐飘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后牲迫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耐朴,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年盹憎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筛峭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陪每,死狀恐怖影晓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情檩禾,我是刑警寧澤挂签,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站锌订,受9級(jí)特大地震影響竹握,放射性物質(zhì)發(fā)生泄漏画株。R本人自食惡果不足惜辆飘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谓传。 院中可真熱鬧蜈项,春花似錦、人聲如沸续挟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)诗祸。三九已至跑芳,卻和暖如春轴总,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背博个。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工怀樟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盆佣。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓往堡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親共耍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虑灰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355