NSCountedSet没有对象

时间:2012-09-12 23:59:06

标签: iphone cocoa duplicates nscountedset

我正在尝试计算数组中的重复对象数。当我将数组传递给我的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(...)
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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