相关疑难解决方法(0)

深拷贝,浅拷贝,克隆

我需要澄清深度拷贝,浅拷贝和Java中的克隆之间的区别

java clone

73
推荐指数
3
解决办法
16万
查看次数

如何在Objective-C中制作深层副本?

我现在正在学习ios的开发,我对深层复制感到困惑.例如,我下面有三节课.现在我想深入复制ClassA,有人可以教我完成复制方法吗?

A:

@interface ClassA : NSObject <NSCopying>

@property (nonatomic, assign) int aInt;
@property (nonatomic, retain) ClassB *bClass;

@end
Run Code Online (Sandbox Code Playgroud)

B:

@interface ClassB : NSObject <NSCopying>

@property (nonatomic, assign) int bInt;
@property (nonatomic, retain) ClassC *cClass;

@end
Run Code Online (Sandbox Code Playgroud)

C:

@interface ClassC : NSObject <NSCopying>

@property (nonatomic, assign) int cInt;
@property (nonatomic, copy) NSString *str;

@end
Run Code Online (Sandbox Code Playgroud)

objective-c deep-copy

22
推荐指数
3
解决办法
3万
查看次数

如何在Swift中执行"Deep Copy"?

在Objective-C中,可以通过以下方式进行深度复制:

 Foo *foo = [[Foo alloc] init];
 Foo *foo2 = foo.copy;
Run Code Online (Sandbox Code Playgroud)

如何在Swift中进行深层复制?

deep-copy swift

20
推荐指数
4
解决办法
3万
查看次数

深拷贝和浅拷贝

我已经阅读了帖子中深拷贝和浅拷贝之间差异的答案,深拷贝和浅拷贝有什么区别?.现在我有点怀疑当我们做了一个浅的副本

 newArray = [NSmutableArray arrayWithArray:oldArray];
Run Code Online (Sandbox Code Playgroud)

新数组将指向oldArray.(如图所示).现在当我从newArray中删除对象时会发生什么?如图所示,它应该从oldArray中移除相同的元素!这好像是

newArray = oldArray是浅拷贝,newArray = [NSmutableArray arrayWithArray:oldArray];是深拷贝.这样对吗?

iphone nsarray

15
推荐指数
2
解决办法
2万
查看次数

在Objective C中克隆/复制NSMutableArray

如何将数组克隆或复制到Objective-C中的其他数组中?

我想有一个函数,当它在NSMutableArray中传递时,它接受数组并用内容填充另一个数组.

它是否像someArray = passedInArray一样简单?或者os有一些initWith函数?

objective-c

8
推荐指数
2
解决办法
2万
查看次数

Objective-C属性的Copy属性是创建深层副本还是浅层副本?

我有NSMutabelArray一些对象作为我的属性View-Controller.现在,当我推送这个VC时,我传递了这个数组.

我最初做了分配.

但现在我需要在VC中旋转时修改数组,而不影响之前VC中的数组.所以它成了一个复制属性.

现在我正在单独更改数组中的对象.

但不知何故......我的前VC中的数组也在变化.

我不得不NSMutabelArray用修改过的对象创建一个新的,并且必须设置为我的属性.

是复制属性只是使另一个数组具有相同的对象引用添加到数组?

objective-c

4
推荐指数
1
解决办法
2897
查看次数

NSArray的副本没有达到我的预期

我有一个NSMutableArray,我将其传递给tableViewController.用户将访问和更新阵列中的数据.添加对象并删除对象.

为了能够在用户与之交互之前返回到数组的状态,我想我会复制一个数组.这样,如果用户决定取消而不继续,我可以将copyArray传回原始数组.

但是,当我更新原始数组上的某些数据时,它也会在副本数组上更新.

不,我没有把它们分配给对方.我使用了以下代码.

array2 = [array1 copy];
Run Code Online (Sandbox Code Playgroud)

我甚至尝试了那个长途跋涉的人.

NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:YES];
Run Code Online (Sandbox Code Playgroud)

但是,如果我将copyItems设置为YES,则应用程序会因此错误而崩溃.

*由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [SaleItem copyWithZone:]:无法识别的选择器发送到实例0xa21f3b0'

arrays objective-c ios

3
推荐指数
2
解决办法
154
查看次数

如何在目标c中声明指针数组

我不知道如何声明一个只存储指向对象的指针的数组.根据我的理解,如果我使用方法

    [ someArray addObject:someObject ] ,
Run Code Online (Sandbox Code Playgroud)

然后它会将对象的副本添加到数组中,对象的任何更改都不会反映到原始对象.

我想要的是创建一个指针数组,它只指向对象,对对象的更改将持续存在.请原谅我,如果我遗漏了一些基本的东西.

arrays iphone objective-c ios

1
推荐指数
1
解决办法
1707
查看次数

initWithArray与initWithArray copyItems

我有一个问题,这两种方法在初始化数组时有什么区别?

我假设copyItems将提供深层副本?

您何时会使用一个与另一个?

谢谢!

objective-c nsarray

1
推荐指数
1
解决办法
6144
查看次数

复制数组本身时如何复制NSArray的所有对象

我有一个对象数组

我想复制数组及其所有内容

"对象"实现NSCopying

我以为这样做

NSArray *copiedArray = [array copy];
Run Code Online (Sandbox Code Playgroud)

会在其中包含的对象中触发copyWithZone.

不幸的是......

如何才能做到这一点?

objective-c nsarray nscopying ios

0
推荐指数
1
解决办法
2477
查看次数

标签 统计

objective-c ×7

ios ×3

nsarray ×3

arrays ×2

deep-copy ×2

iphone ×2

clone ×1

java ×1

nscopying ×1

swift ×1