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ì)象之間的比較方法變得無效,從而使順序集合變得無效。