Iphone 获取空数组
我有以下代码:Iphone 获取空数组,iphone,objective-c,Iphone,Objective C,我有以下代码: - (IBAction)goButton:(id)sender { if(buttonCount==0) { previousStateArray=setUpArray; NSLog(@"previous array count=%d",[previousStateArray count]); [setUpArray removeAllObjects]; for(Node *n in node
- (IBAction)goButton:(id)sender
{
if(buttonCount==0)
{
previousStateArray=setUpArray;
NSLog(@"previous array count=%d",[previousStateArray count]);
[setUpArray removeAllObjects];
for(Node *n in nodeArray)
{
if(![temp isEqualToString:n.strName])
{
[setUpArray addObject:n.strName];
}
temp=n.strName;
}
}
}
- (IBAction)backButton:(id)sender
{
[setUpArray removeAllObjects];
setUpArray=previousStateArray;
NSLog(@"previous array count=%d",[previousStateArray count]);
buttonCount--;
}
setUpArray和previousStateArray都在-viewDidLoad
方法中声明。我的视图只加载一次。在第一个NSLog中,我得到1作为输出,但在第二个NSLog中,我得到1
0作为输出,而我的任何数组都不会再次初始化。那么为什么会发生这种情况呢?初始化数组
setUpArray = [[NSMuatableArray alloc] init];
您的问题在于数组指针 在
按钮中
:
previousStateArray=setUpArray;
现在previousStateArray
指向了setUpArray
指向的同一个数组
[setUpArray removeAllObjects];
这将删除所有对象,现在两个指针都指向一个空数组
在后退按钮中
:
setUpArray=previousStateArray;
它们都指向同一个空数组,因此这条线是多余的。
如果要交换指针,应该保留一个临时指针 在您的代码中
`previousStateArray=setUpArray;` //previousStateArray pointing to same memory location of setUpArray.
使用NSMutableArray
类的-(void)setArray:(NSArray*)otherArray
方法
[previousStateArray setArray: setUpArray];
[setUpArray setArray:previousStateArray];
- (IBAction)goButton:(id)sender
{
if(buttonCount==0)
{
[previousStateArray setArray: setUpArray];
NSLog(@"previous array count=%d",[previousStateArray count]);
[setUpArray removeAllObjects];
for(Node *n in nodeArray)
{
if(![temp isEqualToString:n.strName])
{
[setUpArray addObject:n.strName];
}
temp=n.strName;
}
}
}
- (IBAction)backButton:(id)sender
{
[setUpArray removeAllObjects];
[setUpArray setArray:previousStateArray];
NSLog(@"previous array count=%d",[previousStateArray count]);
buttonCount--;
}
我认为乔拉什的答案是正确的。 您的问题是对数组使用“=”只会使新数组previousStateArray指向setUpArray的同一内存。换句话说,previousStateArray与setUpArray相同
有关更多详细信息,您应该搜索深度和浅层副本。如果(0==buttonCount)您还应该使用
而不是如果(buttonCount==0)
哪一个数组计数是1,而你得到零?以前的