【问题标题】:Array1 is added into Array2 then Array1 is cleared and suddenly disappears from Array2Array1 添加到 Array2 然后 Array1 被清除并突然从 Array2 中消失
【发布时间】:2012-06-17 02:42:00
【问题描述】:

我在这里发生了这种奇怪的事情,每次 if 语句发生时,都应该将 tempArray 添加到 masterArray 中。 (if 语句完美运行,并在应该触发时触发。)

我还需要每次清除临时数组。

我的最终结果应该是一个包含它添加的每个数组的主数组。(意味着我在整个 for 循环中添加的所有临时数组)

相反,它每次只在索引 0 处将 tempArray 添加到 MasterArray。

代码:

- (void)alpabetize:(NSArray *)arr {

self.tempArray = [[NSMutableArray alloc] init];
self.masterArray = [[NSMutableArray alloc] init];

for (int i = 0; i<[arr count]; i++) {

    NSString *currentString = [NSString stringWithFormat:@"%@", [[[arr objectAtIndex:i] valueForKey:@"first_name"] substringToIndex:1]];
    NSString *nextString = [NSString stringWithFormat:@"%@", [[[arr objectAtIndex:(i+1)] valueForKey:@"first_name"] substringToIndex:1]];

    [self.tempArray addObject:[arr objectAtIndex:i]];

    if (![currentString isEqualToString:nextString]) {

    [self.masterArray addObject:tempArray];
    [self.tempArray removeAllObjects];

    }

}

}

如果您从先前添加到其他数组的原始数组中删除所有对象。这是否也清除了另一个数组?这对我来说毫无意义。我的代码一定有问题。有人可以帮我找出我的错误吗?

感谢您的宝贵时间!

【问题讨论】:

  • 你永远不应该调用[self.tempArray release]; 你永远不会释放方法调用的结果(在这种情况下是-tempArray)。我很惊讶这没有崩溃。我也希望每次循环结束时都会崩溃。请参阅 Inder 的回答,了解您遇到特定问题的原因。
  • @RobNapier 感谢您的评论!它现在适用于 Inders 答案。发布部分只是我在调试 2 小时后放在那里的东西。我很惊讶它也没有崩溃。由于它给了我相同的最终结果,所以我忘记在此处发布之前删除该部分。

标签: iphone objective-c arrays


【解决方案1】:
[self.masterArray addObjectsFromArray:tempArray];
[tempArray removeAllObjects];

【讨论】:

    【解决方案2】:

    您确定要在循环内释放 self.tempArray 吗?一旦它进入您的 IF 条件,该数组将为零,除非您再次调用此方法,否则您将无法使用它。尝试在 for 循环之后释放 self.tempArray。

    【讨论】:

      【解决方案3】:

      使用

      [self.masterArray addObject:[tempArray copy]]; // retained copy of array
      

      [self.masterArray addObject:[NSArray arrayWithArray:tempArray]]; // auto released copy of array
      

      而不是

      [self.masterArray addObject:tempArray];
      

      在您的代码中,您正在添加您在下一条语句中清除的同一数组的引用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-02
        • 1970-01-01
        相关资源
        最近更新 更多