在做帧动画demo时遇到以下异常
Terminating app due to uncaught exception
‘NSInvalidArgumentException’, reason: ‘* -[__NSArrayM
insertObject:atIndex:]: object cannot be nil’
异常代码
- (NSArray*)loadAllImagesWithimagePrefix:(NSString*)imagePrefix count:(int)count{
NSMutableArray<UIImage *> *imageArr = [NSMutableArray array];
for (int i = 0; i < count; ++i) {
//获得图片名称
NSString *imageName = [NSString stringWithFormat:@"%@_%d",imagePrefix,count+1];
//创建UIImage对象
//UIImage *image = [UIImage imageNamed:imageName];
/*图片的两种加载方式:
1> imageNamed:
a. 就算指向它的指针被销毁,该资源也不会被从内存中干掉
b. 放到Assets.xcassets的图片,默认就有缓存
c. 图片经常被使用
2> imageWithContentsOfFile:
a. 指向它的指针被销毁,该资源会被从内存中干掉
b. 放到项目中的图片就不由缓存
c. 不经常用,大批量的图片*/
NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageName ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
//加入数组
[imageArr addObject:image];
}
return imageArr;
}
异常原因
逻辑错误
错误位置:
//获得图片名称
NSString *imageName = [NSString stringWithFormat:@”%@_%d”,imagePrefix,count+1];分析
传入的count是图片的张数,获取图片名称是根据传入的字符串前缀+数字(图片资源中从0开始),而此处count+1将图片资源的名称以图片资源的张数+1形成字符串名称,后面的操作自然没能找到资源