2012-04-01 4 views
0

я следующий метод экземпляра, который должен быть возвращающую NSUInteger:Другой 'NSUInteger *' (он же 'неподписанных INT *') против 'NSUInteger' (он же 'неподписанных Int')

- (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. Благодарю.

+0

Какая именно ошибка вы получаете? В заголовке этого не говорится. – bneely

+0

Это компиляция без ошибок или предупреждений для меня на iOS 5.1 с ARC. – lnafziger

+0

Ах, извините, это предупреждение после компиляции, а не ошибка: 'Конфликтный тип возвращаемого значения в реализации 'getCurAnsPos': 'NSUInteger *' (aka 'unsigned int *') vs 'NSUInteger' (aka' unsigned int ')' Я использую Xcode 4.3 и iOS 5.0. –

ответ

0

Этот код не делает много смысла для меня:

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

+0

Я вижу вашу точку зрения. Я фактически использовал idx в более ранней более компактной версии, но пошел с тем, что я опубликовал, поскольку я был немного уверен в том, что я получу назад (только немного, очевидно, но поскольку idx был определен как NSInteger, я думал, что это может быть проблемой) , Спасибо за ссылку на документы. Поэтому я возвращаю NSUInteger. Так почему же предупреждение? –

+0

@BryanHanson Я думаю, что предупреждение не исходит из этого кода, но, как говорили комментаторы, с того места, где оно называется. –