Другой «NSUInteger *» (он же «unsigned int *») против «NSUInteger» (он же «unsigned int») - PullRequest
0 голосов
/ 01 апреля 2012

У меня есть следующий метод экземпляра, который должен возвращать NSUInteger:

    - (NSUInteger)getCurAnsPos {

    NSUInteger CAP = 999;
    NSArray *curCAS = [[GameData gameData].curData valueForKey:@"clueAnsState"];
    for (NSInteger idx = 0; idx < 8; idx++) {
        NSString *temp = [curCAS objectAtIndex:idx];
        if ([temp isEqualToString:@"2"]) {
            CAP = [curCAS indexOfObject:temp];
            NSLog(@"CAP = ");
            NSLog(@"%i", CAP);
        } // only one curCAS should be = 2
    }
    return CAP;
}

Я получаю ошибку в заголовке вопроса.Значение CAP вычислено правильно, но тип возвращаемого значения, по-видимому, неверный.Я не понимаю почему.Я знаю, что это связано с указателями против примитивов, но после прочтения архивов SO я подумал, что это должно сработать.Может быть, CAP = [curCAS indexOfObject:temp]; возвращает CAP в качестве указателя (на самом деле, так и должно быть), но я все еще не вижу, как это изменить.Что мне нужно, так это то, что я могу использовать в выражении objectAtIndex:CAP.Спасибо.

1 Ответ

0 голосов
/ 01 апреля 2012

Этот код не имеет большого смысла для меня:

    NSString *temp = [curCAS objectAtIndex:idx];
    if ([temp isEqualToString:@"2"]) {
        CAP = [curCAS indexOfObject:temp];
        NSLog(@"CAP = ");
        NSLog(@"%i", CAP);
    } // only one curCAS should be = 2

temp - это объект с индексом idx

, если temp == "2", то CAPэто индекс объекта temp (который должен быть idx, чтобы операция не требовалась)

И этот метод возвращает число, а не указатель на число: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html#//apple_ref/doc/uid/20000137-BABDHGFB

...