重写NSObject的数据
我有一个数组这个数组包含所以在这里问的对象,我需要改变阵列重写NSObject的数据
Question *que=[[Question alloc]init];
que=[myarray objectAtIndex:1];
Question *que1=[[Question alloc]init];
que1=[myarray objectAtIndex:2];
here i need to inter change objects each other some
[que1 setValue: que.name forKey:@"Name"];
[myarray relplaceObjectAtIndex:2 withObject:que1];
的位置是它的设定值相同objectValues
请指引我锄正道可以改变价值。
感谢提前
没有与您的代码在这里显著的问题:
-
本声明:
Question *que = [[Question alloc] init];
分配新
Question
实例,并将其赋值给变量que
。当你这样做:que = [myarray objectAtIndex:1];
您将要覆盖您刚刚分配的
Question
情况下,有效的内存泄漏(因为你从来没有公布过它)。如果您使用的是ARC,这不会成为问题,但它是需要注意的,因为有或没有ARC,这是毫无意义的。你做了两次,一次为que
,一次为que1
。因为你实际上并不需要分配和初始化一个新的Question
例如,你可以做:Question *que = [myarray objectAtIndex:1];
您获取到
Question
对象的引用,并把它分配给que1
。然后你改变它,并想把它放回这个数组中。这是毫无意义的,因为数组已经持有对objectAtIndex:
获得的同一个Question
实例的引用。-
你还没有真正解释你在做什么。整个代码基本上可以归结为:
[[[myarray objectAtIndex:2] setValue:[[myarray objectAtIndex:1] name] forKey:@"Name"];
您的代码应该工作,你如何与你有什么表示打算。就在几个点要注意的:
- 你需要
myarray
是一个NSMutableArray
- 您在这里有一个错字:
relplaceObjectAtIndex:2
应该replaceObjectAtIndex
- 在数组索引0开始,我敢肯定你知道的。
感谢您的回应myarray包含NSMutable数组,但我需要交换对象是否有可能? –
首先使用的NSMutableArray对象来保存它不是NSArray的
然后。
你需要理解一个主要的东西,你只持有一个指向对象的指针。数组正在管理它。在访问数组中的对象之前,你已经创建了一个对象,不要这样做会造成内存泄漏。您只能从数组访问对象。
Question * que1=[myarray objectAtIndex:1];
[que1 retain];
[myarray removeObjectAtIndex:1];
Question * que2=[myarray objectAtIndex:2];
[que2 retain];
[myarray removeObjectAtIndex:2];
它可能你没有使用ARC,你的数组是唯一的对象所有者。所以,如果你从数组中删除对象可能释放整个对象
[myarray insertObject:que2 atIndex:1];
[myarray insertObject:que1 atIndex:2];
这是把对象在任何位置的样本。 阅读类引用NSMutableArray
这难道不是出于某种原因? – CodaFi