我有一个数组,这个数组包含问题对象,所以在这里我需要更改数组的位置
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
的正确方法请指导我锄头可以改变价值。
感谢您提前
答案 0 :(得分:1)
您的代码存在重大问题:
本声明:
Question *que = [[Question alloc] init];
分配新的Question
实例并将其分配给变量que
。当你这样做时:
que = [myarray objectAtIndex:1];
您正在覆盖刚分配的Question
实例,有效地泄漏内存(因为您从未发布过它)。如果您使用ARC,这不会成为问题,但是要注意这一点,因为无论是否使用ARC,它都是毫无意义的。您这样做了两次,一次用于que
,一次用于que1
。由于您实际上不需要分配和初始化新的Question
实例,因此您可以这样做:
Question *que = [myarray objectAtIndex:1];
您获得对Question
对象的引用,并将其分配给que1
。然后你改变它并想把它放回数组中。这没有意义,因为数组已经拥有对使用Question
获得的同一objectAtIndex:
实例的引用。
您还没有真正解释过您要做的事情。您的整个代码基本归结为:
[[[myarray objectAtIndex:2] setValue:[[myarray objectAtIndex:1] name] forKey:@"Name"];
答案 1 :(得分:0)
您的代码应该与您展示的内容有关。只需要注意几点:
myarray
成为NSMutableArray
relplaceObjectAtIndex:2
它应该是replaceObjectAtIndex
答案 2 :(得分:0)
首先使用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