2012-04-01 76 views
0

我有以下的實例方法應返回一個NSUInteger:另一個「NSUInteger *」(又名「無符號整數*」)與「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計算的值是正確的,但返回類型顯然是錯誤的。我不明白爲什麼。我知道這與指針vs原語有關,但在閱讀了SO檔案之後,我認爲這應該起作用。這可能是CAP = [curCAS indexOfObject:temp];返回CAP作爲指針(實際上,它一定是),但我仍然不知道如何改變它。我需要的是我可以在objectAtIndex:CAP聲明中使用的東西。謝謝。

+0

你正在得到什麼確切的錯誤?標題沒有說清楚。 – bneely 2012-04-01 02:00:59

+0

這個編譯沒有任何錯誤或警告我在iOS 5.1與ARC。 – lnafziger 2012-04-01 02:06:43

+0

對不起,這是編譯後的一個警告,不是錯誤:''getCurAnsPos'的實現中有衝突的返回類型:'NSUInteger *'(又名'unsigned int *')與'NSUInteger'(又名'unsigned int')'我使用Xcode 4.3和iOS 5.0。 – 2012-04-01 02:15:10

回答

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。那麼爲什麼警告呢? – 2012-04-01 02:20:21

+0

@BryanHanson我認爲這個警告並不是來自這個代碼,而是正如評論者所說的那樣,來自它所調用的地方。 – 2012-04-01 02:24:08

相關問題