gpt4 book ai didi

objective-c - 更改对不同对象的引用而不更改最初引用的对象?

转载 作者:行者123 更新时间:2023-12-03 17:41:21 26 4
gpt4 key购买 nike

我目前正在尝试在 NSXMLParser 的帮助下编写一个 XML 解析器。它应该生成一个 NSMutableDictionaries 数组。

将嵌套标签放入嵌套字典中确实给我的大脑带来了困难。我可能还注意到,我对这门语言非常陌生,这对我来说有点练习。

我的实际问题是:

假设我有一个名为 xmlArray 的 NSMutableArray 。该数组最终应包含所有元素,包括 xml 文件的子元素 - 作为嵌套数组和字典的数组。

现在我可能有另一个名为 currentArray 的变量引用 xmlArray 的特定子数组.

这可能看起来像这样:

currentArray = [xmlArray objectAtIndex: 3];

现在我可能想引用 xmlArray 的不同部分使用currentArray .

如果我这样做会发生什么:

currentArray = [xmlArray objectAtIndex: 5];

这不是等于说:

[xmlArray objectAtIndex: 3] = [xmlArray objectAtIndex: 5];

我是将引用切换到不同的对象 ( [xmlArray objectAtIndex: 5] ) 还是更改最初引用的对象 ( [xmlArray objectAtIndex: 3] )?

如何在不更改最初引用的对象的情况下更改对不同对象的引用?

我知道这可能是一个非常愚蠢的问题,我仍然希望有人愿意提供帮助。 :) 谢谢你!!! :)

最佳答案

这不是变量的工作原理。

发生了什么事?

NSMutableArray* currentArray 是一个变量,它将保存一个指向我们正在处理的对象的指针。下面看一下它的使用过程:

这将获取索引 3 处对象的指针地址,并将其存储在当前数组中:

currentArray = [xmlArray objectAtIndex: 3];

这会将 currentArray 中保存的值(这只是一个指针)替换为另一个指针,这次指向索引 5 处的对象:

currentArray = [xmlArray objectAtIndex: 5];

currentArray 中指针的更改对数组本身的内容没有影响。

这也不会做任何事情,因为它不会重置数组内的任何内容来更改其索引处的指针;它只是从数组中读取,而不是写入。

[xmlArray objectAtIndex: 3] = [xmlArray objectAtIndex: 5];

关于你的问题...

Am I switching my reference to a different object ([xmlArray objectAtIndex: 5]) or am I changing the initially referenced object ([xmlArray objectAtIndex: 3])?

您正在切换对对象的引用,而不是更改初始对象。我强烈建议您阅读Intro to Objective-C以及 C 风格编程的介绍,因为变量管理是相当基础的东西。

关于objective-c - 更改对不同对象的引用而不更改最初引用的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13274955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com