OC中,复制有两种: copy 和 mutableCopy。顾名思义,是生成不可变或可变的对象。关于复制出来的到底是新对象还是原来对象,请参考一下代码:#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
@autoreleasepool&
原创
2016-05-11 15:20:46
723阅读
pre:刚发现一个问题,对于数组来说,无论是可变数组还是不可变数组,都不存在完全意义上的深拷贝 不可变数组直接copy的话相当于赋值,是个引用,地址没变,不可变数组mutableCopy的话是个浅copy,只copy了对象,数组元素地址不变。 可变数组无论是copy还是mutableCopy,都是只拷贝一个对象,数组元素地址指向原来地址,只有对象地址不一样有一
转载
2024-07-18 14:04:21
54阅读
对象的拷贝又被成为对象的克隆。对象的拷贝分为两种:浅拷贝和深拷贝。浅拷贝浅复制(浅克隆)被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用仍然只指向原来的对象,换言之,浅复制仅仅复制锁考虑的对象,而不复制它所引用的对象。对象的浅拷贝是通过调用clone方法来实现的。浅拷贝需要注意的细节:1. 如果一个对象需要调用clone的方法克隆,那么该对象所属的类必须要实现Cloneabl
1 // 2 // main.m 3 // cope-MultableCopy 4 // 5 // Created by dingxiaowei on 13-
原创
精选
2023-04-27 11:56:06
478阅读
1 // 2 // main.m 3 // cope-MultableCopy 4 // 5 // Created by dingxiaowei on 13-5-19. 6 // Copyright (c) 2013年 dingxiaowei. All rights reserved. 7 // 8 9 #import <Founda
原创
2013-08-01 21:38:00
396阅读
在iOS开发中,进行对象的深拷贝是非常重要的一步。我们经常需要复制对象以便在不影响原对象的情况下进行操作。在Objective-C中,可以通过`mutableCopy`来实现对象的拷贝,但有时会遇到一些问题,导致拷贝出的对象与预期不符。本文将详细记录解决“iOS 对象深拷贝 mutableCopy”问题的过程。
## 问题背景
在一个电商应用的开发中,用户的购物车作为一个复杂对象,需要在多处进
# 理解 iOS 的 `copy` 和 `mutableCopy`
在 iOS 开发中,内存管理和对象的复制是非常重要的概念,尤其是在使用 Objective-C 的时候。今天,我们将深入探讨 `copy` 和 `mutableCopy` 的区别,帮助你理解何时使用这两种方法,并通过代码示例来说明它们的实际应用。
## 整体流程
为了方便理解,我们将整个过程分为几个关键步骤。下面是一个流程表
在开发工程中,很多时候我们要创建对象的副本,要创建副本,对象所在的类必须遵守 NSCopying 和 NSMutableCopying@protocol NSCopying- (id)copyWithZone:(NSZone *)zone;@end@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;@en
转载
2023-07-10 16:53:28
58阅读
对象(obj)并不具有prototype属性,只有函数(function)才有prototype属性 1.在JS里,万物皆对象。方法(Function)是对象,方法的原型(Function.prototype)是对象。因此,它们都会具有对象共有的特点。即:对象具有属性proto,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的
转载
2023-12-11 10:09:06
55阅读
# iOS 中容器对象的 `copy` 和 `mutableCopy` 区别
在 iOS 开发中,了解对象的内存管理和对象类型非常重要。特别是容器类(如 `NSArray`, `NSDictionary`, `NSMutableArray`, `NSMutableDictionary` 等)使用 `copy` 和 `mutableCopy` 方法时,它们的行为和影响是一个新手开发者需要掌握的技能
本文转载至http://www.tuicool.com/articles/Fn6rMnCSDN博客原文http://blog.csdn.net/u010962810/article/details/18887841通过copy方法可以创建可变对象或不可变对象的不可变副本,对于不可变副本,其对象的值不...
转载
2015-03-03 18:32:00
110阅读
2评论
Copy,Strong的区别需要了解点内存管理的知识,Strong是ARC下引入的修饰,相当于手动管理内存(MRC)下的retain,在相关代码下,常常看到有的人用copy修饰NSString,NSArray,NSDictionary..等存在可变与不可变之分的对象,常常会用copy,而不是strong,下面代码来解释一下strong与cop
转载
2023-12-13 23:25:40
58阅读
1:copy拷贝得到的对象都是不可变对象,MutableCopy拷贝得到的对象都是可变对象。MutableCopy拷贝得到的对象都是新的对象,会重新分配内存地址,而copy拷贝的对象既可以是新对象,也有可能是原来的对象,也就是内存地址可能与原来相同,可通过打印对象的%p内存地址来查看。当copy一个对象时,若对象不可变,则拷贝出的新对象内存地址原对象内存地址相同,是同一个对象,但是当copy时,对
转载
2024-06-03 21:39:06
21阅读
main.m文件#import #import "Student.h"#import "GoodStudent.h"// copy语法的目的:改变副本的时候,不会影响到源对象#pragma mark 字符串的拷贝(深拷贝)// 深拷贝:内容拷贝,会产生新的对象。新对象计数器置为1,源对象计数器不变。void s
原创
2022-12-09 14:55:08
317阅读
浅复制:只复制指向对象的指针,而不复制引用对象本身。对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只是一个指针,对象本身资源还是只有一份(对象引用计数+1),那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改了。深复制就好理解了,内存中存在了两份独立对象本身。在Objective-C中并不是所有的对象都支持Copy,MutableCopy,遵守NSCopying
转载
2023-07-21 20:00:14
62阅读
深拷贝与浅拷贝(mutableCopy与Copy)详解 iOS 深拷贝与浅拷贝(mutableCopy与Copy)详解 iOS 深拷贝与浅
转载
2022-07-26 20:55:04
84阅读
概述 对于系统的非容器类对象,对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝)。如果是对可变对象复制,都是深拷贝,但是copy返回的对象是不可变的。对于系统的容器类对象,以上规则同样适用,但是容器内的元素全部都是浅拷贝,也就是说所有的元素拷贝的仅仅是指针,内存没被复制。copy与retain的区别copy是创建一个新对象,retain是创建一个指
转载
2023-05-22 20:42:09
128阅读
copy与retain的区别:copy是创建一个新对象,retain是创建一个指针,引用对象计数加1。Copy属性表示两个对象内容相同,新的对象retain为1 ,与旧有对象的引用计数无关,旧有对象没有变化。copy减少对象对上下文的依赖。 retain属性表示两个对象地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1也就是说,retain 是指针拷贝,co
转载
2013-06-26 03:41:00
89阅读
2评论
1、 copy、mutableCopy方法copy方法返回对象的不可修改的副本mutableCopy方法返回的对象可修改的副本1)、测试demoint main(int argc, char * argv[]) { @autoreleasepool { NSMutableString *book = [NSMutableString stringWithString:@"c...
原创
2021-08-12 15:12:17
166阅读
1、 copy、mutableCopy方法copy方法返回对象的不可修改的副本mutableCopy方法返回的对象可修改的副本
原创
2022-03-15 09:30:29
133阅读