深入理解copy
注意看本體 如果本體是不可變的。 copy的話是淺拷貝。 指標複製.
本體是可變的。 那麼copy就說深拷貝。 開闢新的記憶體。 但是返回的物件是不可變對。
mutCopy 都是深拷貝。返回的物件是可變的。
簡單說就是 copy 返回不可變物件,metableCopy 返回可變物件。但 在程式中
對於 不可變物件(如:常量 。NSString *a = @"abc".)copy 返回不可變物件,常量本來就是不可變的。如果重新分配記憶體,有點浪費啦。
所有 copy 後的物件 和a 都指向 記憶體中的一塊儲存常量的記憶體塊。 及淺拷貝,此時指向常量的地址 *a 引用計數為2。metableCopy 返回可變物件,所有會賦值內容。及深拷貝。
不可變物件(如:常量)copy 是淺拷貝, metableCopy 是深拷貝。
對於可變物件 copy 返回不可變物件, 所以會拷貝內容,其內容不可變。 metableCopy 也會拷貝內容,但內容是可變的。 都是深拷貝。
可變物件 copy 和 metableCopy 都是 深拷貝
相關文章
- Copy與mutableCopy的個人理解
- Copy of a Copy of a Copy
- 深入理解margin
- 深入理解ReactReact
- 深入理解KVO
- 深入理解 ReentrantLockReentrantLock
- 深入理解 PWA
- 深入理解BFC
- 深入理解volatile
- 深入理解MVCMVC
- 深入理解 TypeScriptTypeScript
- 深入理解JSCoreJS
- 深入理解JavaScriptCoreJavaScript
- 深入理解Isolate
- 深入理解 JVMJVM
- 深入理解HashMapHashMap
- 深入理解ThreadLocalthread
- 深入理解TransformORM
- 深入理解 GitGit
- 深入理解reduxRedux
- BFC深入理解
- 深入理解paddingpadding
- 深入理解JSXJS
- 深入理解 SynchronizationContextContext
- 深入理解JVMJVM
- 深入理解AQSAQS
- 【Interview】深入理解ReentrantLockViewReentrantLock
- 深入理解Java PriorityQueueJava
- 深入理解 Java 方法Java
- 深入理解JavaScript原型JavaScript原型
- 深入淺出理解ReduxRedux
- 深入理解AbstractQueuedSynchronizer(AQS)AQS
- Java:IO:深入理解Java
- 深入理解load averages
- 深入理解 async / awaitAI
- 《深入理解SpringMVC思想》SpringMVC
- 深入理解閉包
- 深入理解JVM——物件JVM物件
- 深入理解MySQL索引MySql索引