盡量使用不可變對(duì)象而非可變對(duì)象

Cocoa對(duì)象默認(rèn)都是可變的。

為什么會(huì)存在不可變對(duì)象?
很簡單,它保證了對(duì)象不被意外地改變。

什么樣的值適合作為不可變對(duì)象?
1、封裝離散值而成的集合。
2、值被包含在緩沖區(qū)中的對(duì)象,這里說的是對(duì)象的值。
3、不可變比可變開銷大的對(duì)象。

不可變對(duì)象并不能保證其中的所有對(duì)象都不可被改變,因?yàn)槟闶强梢愿淖兤渲械目勺儗?duì)象的,你只是不能改變這個(gè)對(duì)象的指針而已。
另外,在各種轉(zhuǎn)換的過程中,也可能出現(xiàn)可變對(duì)象被轉(zhuǎn)換成不可變對(duì)象的情況。

某些集合可能因?yàn)榇鎯?chǔ)的可變對(duì)象發(fā)生了改變而變得無效或者被破壞。
1、如果作為該集合對(duì)象的屬性的對(duì)象的key發(fā)生了改變,并影響到了該集合對(duì)象的hash或者isEqual方法,就會(huì)導(dǎo)致該集合對(duì)象被破壞。
2、如果該集合對(duì)象是順序集合,如果其中存儲(chǔ)的對(duì)象的屬性發(fā)生了改變可能讓集合中對(duì)象之間的比較方法變得無效,從而使順序集合變得無效。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 11,141評(píng)論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,914評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,764評(píng)論 18 399
  • 翻譯自“Collection View Programming Guide for iOS” 0 關(guān)于iOS集合視...
    lakerszhy閱讀 3,920評(píng)論 1 22
  • 一個(gè)人無言的生活。
    Alvin灬小白閱讀 194評(píng)論 0 0