由于未捕获的异常'NSRangeException'而终止应用程序,原因:'*** - [__ NSArrayI objectAtIndex:]:索引205003599超出范围[0 .. 5]'
我在.h文件中编写此代码
#import <Foundation/Foundation.h>
@interface image : NSObject
@property(strong,nonatomic) NSArray *myimage;
-(image *) randomimage;
@end
我在.M文件
上实现它#import "image.h"
#import <UIKit/UIKit.h>
@implementation image
- (instancetype)init
{
self = [super init];
if (self) {
_myimage =[[NSArray alloc]initWithObjects:
[UIImage imageNamed:@"Earth.jpg"],
[UIImage imageNamed:@"Jupiter.jpg"],
[UIImage imageNamed:@"Orion.jpg"],
[UIImage imageNamed:@"Saturn.jpg"],
[UIImage imageNamed:@"Venus.jpg"],
[UIImage imageNamed:@"Mars.jpg"],
nil];
}
return self;
}
-(image *) randomimage{
int randimage=arc4random_uniform((int)self.myimage);
return [self.myimage objectAtIndexedSubscript:randimage];
}
@end
答案 0 :(得分:1)
你期待什么?看看你的代码:
int randimage=arc4random_uniform((int)self.myimage);
return [self.myimage objectAtIndexedSubscript:randimage];
arc4random_uniform
可以返回0和其参数之间的任何内容。参数是self.myimage
- 对象。它的值不是整数,但是你强迫它是一个整数。你得到的是这个对象的内存位置,可以是任何数字。所以你最终得到一个巨大的数字,超出了数组中实际的元素数量。你的意思可能是self.myimage.count
,不是吗?