我有这段代码,它允许我传递索引,并有选择地检索数组中一定范围长度内的图像(取决于方向)。

纵向时,范围应该是每个索引20个项目,而我总共有43个项目。但是,当我传入最后一个索引时,索引59超出[0..42]的范围时出现超出范围的异常。

NSArray *tempArray = [self imageData];

UIDeviceOrientation devOr = [[UIDevice currentDevice] orientation];

int kItemsPerView;

if (UIDeviceOrientationIsPortrait(devOr)) {
    kItemsPerView = 20;
}else {
    kItemsPerView = 14;
}

NSRange rangeForView = NSMakeRange( index * kItemsPerView, kItemsPerView );

NSArray *subArray = [[tempArray subarrayWithRange:rangeForView] retain];
NSMutableArray *imagesForView = [NSMutableArray arrayWithArray:subArray];
[subArray release];

return imagesForView;


我该如何预防呢?

谢谢。

最佳答案

if ((index * kItemsPerView + kItemsPerView) >= tempArray.count)
     rangeForView = NSMakeRange( index * kItemsPerView, tempArray.count-index*kItemsPerView );

08-05 22:47