先寫些結(jié)論镇饮,有空了再分析
iOS使用了類簇模式蜓竹,比如數(shù)據(jù)創(chuàng)建NSArray和NSMutableArray時都是通過__NSPlacehodlerArray實現(xiàn)的。
只是在alloc時出來的__NSPlacehodlerArray相關16字節(jié)储藐,并且在應用里任何地方NSArray *arr =
[NSArray alloc]都相同俱济,所有的不可變數(shù)組alloc創(chuàng)建的都一樣,同樣可變數(shù)組的也都一樣钙勃。
并且對所有長度為0的不可變數(shù)組蛛碌,地址都一樣。
同樣對于NSDictionary也是類似原理辖源,但是NSString不一樣
ps:記得在老版本中測試的時候[NSArray arrayWithArray:array1]得到的array和原array并不是一塊內(nèi)存蔚携,當時還疑惑為什么不使用同一對象希太,都是不可變的,使用同一對象沒有任何問題酝蜒,還可以節(jié)約內(nèi)存誊辉。看來是后來蘋果也覺得是可以這樣優(yōu)化的亡脑。