Objective-C - 循环播放但循环条件为假

时间:2011-01-15 16:08:29

标签: objective-c crash for-loop infinite-loop conditional-operator

我正在尝试使用此函数将分段表转换为平面列表到didSelectRowAtIndexPath(我有一个NSArray,它初始化了每个部分中包含的项目数):

某处...... :-)

self.sectionsArray = [NSArray arrayWithObjects:macroIntNumber(1), macroIntNumber(3), macroIntNumber(12), nil];

然后进入didSelectRowAtIndexPath:

 int selectedRow = 0;
 int a = indexPath.section;

 for (int i=0; i<indexPath.section-1; i++) {
  selectedRow += [[self.sectionsArray objectAtIndex:i] intValue];
 }
 selectedRow += indexPath.row;

但是......这会导致indexPath.section = 0崩溃(第一部分)。 因为循环无限播放直到NSArray调用崩溃... 奇怪!!!

强制for (int i=0; i<0-1; i++) {正常工作

强制for (int i=0; i<a-1; i++) {正常工作

我错过了什么?

1 个答案:

答案 0 :(得分:4)

sectionNSUInteger,所以它是未签名的。因此,在该无符号整数上从0减1会使您获得非常大的数而不是-1。

使用a时有效,因为您已将a声明为int。 :)