我正在尝试计算数组中的重复对象数。当我将数组传递给我的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(...)
}
答案 0 :(得分:0)
我的猜测是,MostDaysAttended正在被释放,所以当你调用checkDuplicatesIndex时,那里什么也没有。您可以通过在NSCountedSet * set .....行之前记录mostDaysAttended来轻松检查这一点。如果情况确实如此,请为mostDaysAttended创建保留(或强)属性。
答案 1 :(得分:0)
这是“NSCountedSet”声明之后和“for”循环之前的代码。
//INITIALIZE
for( int g =0;g<=11;g++)
indexCount[g]=0;
一旦我删除了这个循环并在所有其他声明之前将它放在函数的开头,代码就开始按预期工作了。我不确定为什么这会影响集合中的对象数量,但确实如此。