我有以下实例方法应该返回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
语句中使用的东西。感谢。
答案 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