我目前正在尝试在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]
)?
如何在不更改最初引用的对象的情况下更改对其他对象的引用?
我知道这可能是一个非常愚蠢的问题,我仍然希望有人可能想要帮助。 :) 谢谢!!! :)
答案 0 :(得分:2)
这不是变量的工作原理。
NSMutableArray* currentArray
是一个变量,保持 指针到我们正在处理的对象。请参阅下面的使用方法:
这将获得索引3处对象的指针地址,并将其存储在当前数组中:
currentArray = [xmlArray objectAtIndex: 3];
这会将currentArray
(只是指针)中的值替换为另一个指针,这次是指向索引5处的对象:
currentArray = [xmlArray objectAtIndex: 5];
currentArray
内指针的更改对数组本身的内容有 no 影响。
这也不会做任何事情,因为它没有重置数组中的任何内容来改变它们的索引指针;它只是读出数组而不是写入数据。
[xmlArray objectAtIndex: 3] = [xmlArray objectAtIndex: 5];
我将引用切换到另一个对象([xmlArray objectAtIndex:5])还是我更改了最初引用的对象([xmlArray objectAtIndex:3])?
您正在切换对象的引用,而不是更改初始对象。我强烈建议你阅读Intro to Objective-C,以及C风格编程的介绍,因为变量管理是相当基础的东西。