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

Objective-C-已播放循环,但循环条件为假,objective-c,crash,for-loop,infinite-loop,conditional-operator,Objective C,Crash,For Loop,Infinite Loop,Conditional Operator,我正试图使用此函数将一个分区表转换为一个平面列表,并将其转换为didSelectRowAtIndexPath(我有一个NSArray,用每个分区中包含的项目数初始化): 某处…:-) 然后进入didSelectRowAtIndexPath: int selectedRow = 0; int a = indexPath.section; for (int i=0; i<indexPath.section-1; i++) { selectedRow += [[self.sectio

我正试图使用此函数将一个分区表转换为一个平面列表,并将其转换为didSelectRowAtIndexPath(我有一个NSArray,用每个分区中包含的项目数初始化):

某处…:-)

然后进入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;
int selectedRow=0;
int a=indexPath.section;

for(int i=0;i
节是一个
nsuiger
,因此它是无符号的。因此,在该无符号整数上从0中减去1会使您得到一个非常大的数字,而不是-1


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

节是
整数,因此它是无符号的。因此,在该无符号整数上从0减去1会使您得到一个非常大的数字,而不是-1


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

不,你在开玩笑吗???但这似乎是造成这种影响的真正原因。确切地说,我从未见过像iphone/Objective-C语言这样的开发环境。该死!但为什么我要为iPhone编写代码???也许是因为我有一个:-)谢谢你的帮助。无符号整数就是很好的ol'C;不要为此责备科科。:)对于Windows、Mac、Windows Mobile、Blackberry、Linux、BSD和任何其他*NIX,您都会遇到同样的问题。。。唯一不受影响的是Android,这仅仅是因为它使用Java(不支持无符号整数原语)。这不是iOS或Objective-C中的缺陷,但这可能是您需要改进的地方。我不怪无符号整数。但是如果你从一个未签名的int中减去1,它应该返回一个有符号的int。我不仅仅是在讨论这个简单的问题。我在两周内用Java编写了一个应用程序。它就像一个符咒。我从一个月开始重写iPhone的应用程序,每次我都会遇到很多简单的问题。应用程序还没有重写一半。当我开始上一个Android版本时,我对Java一无所知。iPhone编码很费时。不,你在开玩笑吧???但这似乎是造成这种影响的真正原因。确切地说,我从未见过像iphone/Objective-C语言这样的开发环境。该死!但为什么我要为iPhone编写代码???也许是因为我有一个:-)谢谢你的帮助。无符号整数就是很好的ol'C;不要为此责备科科。:)对于Windows、Mac、Windows Mobile、Blackberry、Linux、BSD和任何其他*NIX,您都会遇到同样的问题。。。唯一不受影响的是Android,这仅仅是因为它使用Java(不支持无符号整数原语)。这不是iOS或Objective-C中的缺陷,但这可能是您需要改进的地方。我不怪无符号整数。但是如果你从一个未签名的int中减去1,它应该返回一个有符号的int。我不仅仅是在讨论这个简单的问题。我在两周内用Java编写了一个应用程序。它就像一个符咒。我从一个月开始重写iPhone的应用程序,每次我都会遇到很多简单的问题。应用程序还没有重写一半。当我开始上一个Android版本时,我对Java一无所知。iPhone编码很费时。
 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;