- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当你将对象添加到集合中时,比如NSMutableArray
,对象是被复制,即值语义,还是被保留,即引用语义?
我对这个例子感到困惑:
NSMutableString *testStr = [@"test" mutableCopy];
NSMutableArray *arrayA = [[NSMutableArray alloc] init];
[arrayA addObject:testStr];
NSLog(@"%@", arrayA); // output: test
testStr = [@"world" mutableCopy];
NSLog(@"%@", arrayA); // output: test
// testStr is copied - value semantics
NSMutableArray *testArr = [@[@1, @2] mutableCopy];
NSMutableArray *arrarB = [[NSMutableArray alloc] init];
[arrarB addObject:testArr];
NSLog(@"%@", arrarB); // output: [1, 2]
[testArr addObject:@3];
NSLog(@"%@", arrarB); // output: [1, 2, 3]
// testArr is retained - reference semantics
你可以看到:如果对象是一个NSMutableString
,看起来对象被复制了——你改变对象不会影响数组中的对象。
但是,如果对象是一个 NSMutableArray
,当你改变对象时,数组中的对象也会改变——就像你保留对象或通过引用传递一样。
我是不是漏掉了什么?谢谢。
最佳答案
集合保留而不是复制添加到它们的对象。
关于ios - NSMutableArray 中的addObject 是复制还是保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21911927/
从周日开始,我尝试用 100 种方法初始化 NSMutableArray,但没有任何效果。我尝试将其设置为等于新分配和初始化的 NSMutableArray,只需分配并自行初始化变量,我能想到的每种组
我正在尝试在循环中为我的 NSMutableDictionary 设置一些值,并将字典值每次分配给 NSMutableArray,如下所示, for(int i=0;i<=lastObj;i++){
我是 xcode/iOS 开发的 super 新手。我用 objective c 编写了一个教程应用程序,它运行得非常棒。我的下一次尝试是 swift 重写它。 一些非常奇怪的事情正在发生。每次在 x
我无法将对象添加到“easyQArray”(NSMutableArray)中。当我在本地定义数组时它确实有效,但是当我将声明移动到 .h 文件中时它不再起作用。 当我尝试访问数组中不存在的索引时,应用
我被这个奇怪的问题难住了。我将 Memo.Lines 作为 TString 传递给一个过程,并用 AddObject 填充它。但是对象没有被添加(通过 L := TURLLinkObject(AStr
我正在使用以下方法: -(void) finishQuestionnaire:(id)sender{ NSString * ans; NSString* qt = [[[questio
我正在向 NSMutableArray 添加对象“m”,如下所示: [m setObject:a forKey:@"a"]; [m setObject:b forKey:@"b"];
我对 iOS 开发真的很陌生,我正在尝试创建一个简单的表格 View ,所以我添加了一个表格 View Controller ,向其中添加了我的自定义类,现在我正在尝试添加项目。 所以我创建了一个新数
这个问题在这里已经有了答案: NSMutableArray addObjects - unrecognized-selector (1 个回答) 关闭 8 年前。 我正在向我的 NSMutableA
我正在尝试将一个对象添加到 Parse 中的一个关系,尽管代码执行时没有任何错误,但该关系没有出现在后端,因此该对象没有被保存。 PFObject *newContact = [PFObject ob
我有以下代码,它给出了代码后面的结果。由于某种原因,添加的对象有时会按应有的方式嵌入引号中,有时却不像下面的“Abtenauer”那样。谁能告诉我可能会发生什么? 相关代码: EQBreedInfo
有两个可变数组,根据一些语句控制流将对象添加到不同的可变数组。我知道我可以使用 [theMutableArray addObject: anyObject] 但我认为有点冗长。我真正需要的是 [obj
我正在使用 apache commons 包在我的 java 应用程序中创建连接池。 MAXACTIVE 值设置为 0,MINACTIVE 值设置为 1。使用 setMaxWait() 方法,我将等待
我的项目中有一组这样的图片, 我正试图将它们全部放入一个可变数组中,就像这样, NSMutableArray *imageArray = [[[NSMutableArray alloc] initWi
我正在尝试创建数组(城市)的数组(州)。每当我尝试向我的 City 数组添加一个项目时,我都会收到此错误: 'NSInvalidArgumentException', reason: '*** +[N
我一直在网上到处搜索,并尝试了迄今为止我能想到的一切,但都无济于事。这是我的问题:在我的程序中,我有一个名为 Scale 的类,Scale 有几个属性。用户可以通过单击名为 addScale 的按钮向
我假设 NSArrayController 的 addObject 和 removeObject 的工作方式与 NSMutableArray 中的类似物类似。 但是,看起来 addObject 将其目
我想知道这个方法调用的作用: stringList.addObject(String,Object); 我也想知道这个属性是做什么的: stringList.Objects[i] 添加时看起来像键、值
我的代码给出了一个错误提示 No visible interface for 'NSMutableDictionary' declares the selector 'addObjects:forKe
我有一个计算属性,它从另一个属性构建一个数组并返回它。当我用 addObject 更新这个数组时, set显然没有被调用,所以我无法更新原始属性。有没有办法让我也更新 addObject 上的原始属性
我是一名优秀的程序员,十分优秀!