永发信息网

自定义对象 深copy ios 属性很多怎么办

答案:1  悬赏:40  手机版
解决时间 2021-11-24 20:45
自定义对象 深copy ios 属性很多怎么办
最佳答案
象复制有两种,一种是foudation中自己的对象,包括NSString,NSArray,NSMutableArray,NSDictionary,等等,第二种就是自定义对象的复制;其实要实现复制,必须要实现两个协议,对于前者,系统已经默认给实现了,而对于后者则必须自己实现。
首先,说说第一种(NSString等)对象复制的各种情况,举例如下:
#import
#import "Car.h"
int main(int argc, const char * argv[])
{

@autoreleasepool {

// insert code here...

NSArray *array1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",nil];
NSMutableArray *array2 = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];
NSArray *array1Copy = [array1 copy];
NSArray *array2Copy = [array2 copy];
NSArray *array1MutableCopy = [array1 mutableCopy];
NSArray *array2MutableCopy = [array2 mutableCopy];
NSLog(@"array1地址:%p,array2地址:%p,array1Copy地址:%p,array2Copy地址:%p,array1MutableCopy地址:%p,array2MutableCopy地址:%p",array1,array2,array1Copy,array2Copy,array1MutableCopy,array2MutableCopy);
}
return 0;
}

结果说明:将第一种又可分为两种,一种是不可变如NSArray,一种是可变如NSMutableArray。
a:对于不可变的对象,如果进行copy复制,那么此时的copy相当于retain,并没有开辟新的内存,但是如果是进行mutableCopy则是进行了新内存的开辟,此时只是计数加1而已;
b:对于可变对象,则不管是copy还是mutableCopy,都开辟了新的内存空间。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
泉州十八景是哪些
viv0x5充电怎么充电充不满了?
顶丝设计求助本人遇到一个顶丝设计问题,请帮
C语言:这里为什么可以没有包含文件
如何把win7计算器移到win10下使用,单独拷贝
女性私护用品属于商标哪一类
庄河市四丁美术中心地址有知道的么?有点事想
盆栽桂花用椰砖可以吗
品种不同的乌龟可以一起喂养吗?
{编写c语言X=0那么y=0,x<0那么y=-1,x>0,那么y
led封装术语有那些?
生姜治白殿疯, 怎样用生姜?
The Beatles Girl翻译
新赛季NBA球星谁最火
为啥雅品贞操网上午可以进去,下午却说此账号
推荐资讯
大学寝室里同寝六个同学 不说话 是什么原因
琪特汽车销售服务中心地址在哪,我要去那里办
我是襄阳本地的,想去专门卖建材家具的市场逛
5月17日什么节日
小梅上半年平均每月用电279瓦上半年一共用了
求 (商家因业务需要要扩大店面,所以向商场管
上海哪里有劲酸味味彩虹糖
想知道: 兰州市 永登县第五中学 在哪
一支没有斗志,没有目标,没有胆量的团队会怎
美国基督教赞同美国自由女神像吗 美国基督教
开办驾校资质及新规
中国移动(淳风街)地址有知道的么?有点事想过
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?