这2之间有什么区别吗?
int count = 0;
for (UIView *view in scrollView.subviews) {
NSLog(@"%d < %d", [json[@"images"] count] - 1, count);
// Output: -1 < 0
if ([json[@"images"] count] - 1 < count) break;
}
和
int count = 0, maxIndex = [json[@"images"] count] - 1;
for (UIView *view in scrollView.subviews) {
NSLog(@"%d < %d", maxIndex, count);
// Output: -1 < 0
if (maxIndex < count) break;
}
我刚刚面对的是,第一个解决方案没有break
循环,而第二个解决方案确实如此。
背后有什么理由吗?
答案 0 :(得分:3)
那是因为count
是NSUInteger
属性。因此,在您的案例中永远不会-1
。在您的第二种情况下,您将maxIndex
分配给int
,然后-1
会为您提供int count = 0;
NSUInteger maxIndex = [json[@"images"] count] - 1;
for (UIView *view in scrollView.subviews) {
NSLog(@"%d < %d", maxIndex, count);
// Output: -1 < 0
if (maxIndex < count) break; //This will not break either as maxIndex will never be `-1`
。
所以试着清楚地了解发生了什么。
NSLog
}
此外,在%d
您使用的int
%lu or %lx
类型typeId
的格式说明符中,请尝试extendedTypeStr
希望这有帮助