我有一个数组,这个数组包含问题对象,所以这里我需要更改数组的位置
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是否正确
请指导我如何交换价值。
感谢你的预支
发布于 2012-05-02 12:24:40
你的代码在这里有很大的问题:
que *que =[问题分配初始];
分配一个新的Question实例并将其赋值给变量que。当你这样做的时候:
que = myarray objectAtIndex:1;
您正在覆盖刚刚分配的Question实例,从而有效地泄漏了内存(因为您从未释放过它)。如果你正在使用ARC,这不会是一个问题,但无论如何,这是需要注意的事情,因为不管有没有ARC,这都是没有意义的。您这样做了两次,一次是针对que,另一次是针对que1。因为你实际上不需要分配和初始化一个新的Question实例,所以你可以这样做:
objectAtIndex:1;
Question对象的引用并将其赋值给que1。然后对其进行变异,并将其放回数组中。这是没有意义的,因为数组中已经包含了对使用objectAtIndex:获得的同一个Question实例的引用。,
[[myarray对象属性索引:2名称:[myarray对象属性索引:1名称] forKey:@"Name"];
发布于 2012-05-02 12:08:49
你的代码应该按照你想要的方式工作。只有几点需要注意:
索引的起始位置有一个拼写错误:NSMutableArray
replaceObjectAtIndex
myarray 0,我相信你应该知道这一点。relplaceObjectAtIndex:2 发布于 2012-05-02 12:14:24
首先使用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
https://stackoverflow.com/questions/10407512
复制相似问题