0

我正在尝试计算数组中重复对象的数量。当我将数组传递给我的 NSCountedSet 函数时,它没有对象。从我看到的示例中,通常将 NSArray 传递给 NSCountedSet,而我传递的是 NSMutableArray。但是,我找不到任何说明不允许这样做的文档。

-(void)GetDays
{
       ...
       BOOL goodDuplicates = NO;
       NSMutableArray *mostDaysAttended = [[NSMutableArray alloc] init];
       mostDaysAttended = [self gatherDays];
       goodDuplicates  = [self checkDuplicatesforIndex:mostDaysAttended];
       ...

{


-(BOOL)checkDuplicatesforIndex: (NSMutableArray *)mostDaysAttended
{


    NSCountedSet *set   = [[NSCountedSet alloc] initWithArray:mostDaysAttended];

    for (id item in set)  //<== at this point "set" has zero objects
    ...
    return(...)
}
4

2 回答 2

0

我的猜测是 mostDaysAttended 正在被释放,所以当你调用 checkDuplicatesIndex 时,里面什么都没有。您可以通过在 NSCountedSet *set..... 行之前记录 mostDaysAttended 轻松检查这一点。如果确实如此,请为 mostDaysAttended 创建一个保留(或强)属性。

于 2012-09-13T01:41:07.033 回答
0

这是“NSCountedSet”声明之后和“for”循环之前的代码。

  //INITIALIZE
  for( int g =0;g<=11;g++)
    indexCount[g]=0;

一旦我删除了这个循环并将它放在函数开头的所有其他声明之前,代码就开始按预期工作。我不确定为什么这会影响集合中的对象数量,但确实如此。

于 2012-09-15T16:55:14.473 回答