深入理解copy
注意看本體 如果本體是不可變的。 copy的話是淺拷貝。 指標複製.
本體是可變的。 那麼copy就說深拷貝。 開闢新的記憶體。 但是返回的物件是不可變對。
mutCopy 都是深拷貝。返回的物件是可變的。
簡單說就是 copy 返回不可變物件,metableCopy 返回可變物件。但 在程式中
對於 不可變物件(如:常量 。NSString *a = @"abc".)copy 返回不可變物件,常量本來就是不可變的。如果重新分配記憶體,有點浪費啦。
所有 copy 後的物件 和a 都指向 記憶體中的一塊儲存常量的記憶體塊。 及淺拷貝,此時指向常量的地址 *a 引用計數為2。metableCopy 返回可變物件,所有會賦值內容。及深拷貝。
不可變物件(如:常量)copy 是淺拷貝, metableCopy 是深拷貝。
對於可變物件 copy 返回不可變物件, 所以會拷貝內容,其內容不可變。 metableCopy 也會拷貝內容,但內容是可變的。 都是深拷貝。
可變物件 copy 和 metableCopy 都是 深拷貝
相關文章
- 深入理解copy關鍵字
- iOS 理解copy與mutableCopyiOS
- Copy與mutableCopy的個人理解
- iOS中copy和strong的個人理解iOS
- 深入理解Isolate
- 深入理解HashMapHashMap
- 深入理解TransformORM
- 深入理解KVO
- 深入理解 JVMJVM
- 深入理解 GitGit
- 深入理解AQSAQS
- 深入理解JVMJVM
- 深入理解 TypeScriptTypeScript
- 深入理解JavaScriptCoreJavaScript
- 深入理解MVCMVC
- 深入理解 PWA
- 深入理解margin
- 深入理解ReactReact
- 深入理解BFC
- 深入理解reduxRedux
- BFC深入理解
- 深入理解 GCDGC
- 深入理解 requestAnimationFramerequestAnimationFrame
- 深入理解Eureka
- AsyncTask深入理解
- 深入理解RunLoopOOP
- 深入理解Fsync
- 深入理解yield
- 深入理解MySQL索引MySql索引
- 深入理解ThreadLocalthread
- 深入理解JVM——物件JVM物件
- 對redis深入理解Redis
- 深入理解 ceph mgr
- 深入理解JavaScript原型JavaScript原型
- 深入理解 Event LoopOOP
- 深入理解Java PriorityQueueJava
- 深入理解vue元件Vue元件
- 深入理解 Java 方法Java