ios - Objective - c - 指针以及将数组分配给另一个数组时真正发生的事情

标签 ios objective-c nsmutablearray nsarray

<分区>

所以我想知道当我这样做时会发生什么

NSMutableArray *arr1 = [[NSMutableArray alloc] init];
NSMutableArray *arr2 = [[NSMutableArray alloc] init];

[arr1 addobject:ob1];

arr2 = arr1;

[self changeValue:[arr2 objectAtIndex:2]]; //function that will modify what is sent to it


1) 我什至可以对 nsmutablearrays 做 = between 吗?
2)如果我访问arr1中的对象,它会被修改吗?
3)有多深? - 如果我从其他地方访问那个对象,它会被修改吗?
4) 我假设使用 mutableCopy 会返回一个全新的数组。
5) 是否有模拟这种深度链接/连接的方法?例如,如果我想将同一个对象分配给 2 个不同的数组,那么如果我修改一个数组,它会更改两个数组中的那个对象?
6) 代表这个的词是什么?我不认为它是链接/连接。

非常感谢
-詹姆斯

最佳答案

我认为您混淆了对象和变量。您不会将一个对象分配给另一个对象;您将对象分配给变量。变量只是一种观察对象的方法,否则它会漂浮在程序内存空间的某个地方。两个变量可以指向同一个对象,当发生这种情况时,是的,您会通过两个变量看到对象的变化,因为它是同一个对象

当您执行 arr2 = arr1 时,您让 arr2 指向与 arr1 相同的数组。所以如果你在 arr1 中改变一些东西,你会在 arr2 中看到它吗?是的,因为 arr2 arr1。这是同一个对象,只是叫了两个不同的名字。

如果它是 arr2 = [arr1 mutableCopy],是的,这将创建一个新的数组对象,因此这两个变量将指向不同的对象。如果将一个对象添加到一个数组,它不会神奇地添加到另一个数组。但这提出了一个问题:如果 arr1 包含一堆 NSMutableStrings 怎么办?更改 arr1 中的一个字符串是否也会更改 arr2 中的相应字符串?是的,因为即使数组本身是一个不同的对象,它仍然包含与原始数组相同的对象。

所以思考这个问题的方式不是将两个数组以某种方式链接或连接起来。您需要问的唯一问题是,“我在两个地方与之交互的这些对象是同一个对象还是不同的对象?”

关于ios - Objective - c - 指针以及将数组分配给另一个数组时真正发生的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644757/

上一篇:ios - 在 iPad 应用程序中禁用 UIImageView 的手势识别器

下一篇:IOS:由于可能使用过多内存而导致项目崩溃(使用 ARC 但可能是由于图像大小)

相关文章:

Objective-C:复制数组,仅在复制中修改元素(对象)

ios - 如何避免双重 "save password to iCloud"对话框?

java - 将 Java 库与 Xcode、Objective C 和 Cocoa 结合使用

objective-c - UIScrollView 的最大缩放比例

ios - 在 iOS 上以编程方式向按钮添加操作

ios - 从 nsarray 中删除一个对象将删除所有对象

ios - 如何过滤字典的 NSMutableArray?

ios - UITabBar如何设置圆角和阴影?

ios - 应用程序进入后台时清空 NSCache

ios - 在 iOS 设备上流式传输一些音频格式文件