提问人:stefanosn 提问时间:1/30/2022 更新时间:1/31/2022 访问量:108
在目标 c 中设置 UIImageView 时出现致命错误
Fatal error when setting UIImageView in objective c
问:
您好,我有一个 UIImageview 并尝试设置以前保存在 NSArray 中的图像,然后将 NSArray 保存到 NSMutableDictionary 中。这是错误和代码。任何帮助都表示赞赏。
由于未捕获的异常“NSInvalidArgumentException”而终止应用,原因:“-[__NSCFConstantString _isSymbolImage]:发送到实例0x100e14318无法识别的选择器” 终止时未捕获的 NSException 类型异常
myAppDelegate *appDelegate = (myAppDelegate *)[UIApplication sharedApplication].delegate;
NSMutableArray *allKeys = [[appDelegate.localDataForIngestAndErrorVideos allKeys] mutableCopy];
for (NSString *key in allKeys) {
NSArray *object = (NSArray*)[appDelegate.localDataForIngestAndErrorVideos objectForKey:key];
NSLog(@"id object ingest: %@",[object objectAtIndex:0]);
if ( [cell.Model.ContentItem.videoUploadStatus isEqualToString:@"ingest"])
{
cell.Model.ContentItem.mediaVideoUriHls = (NSURL*)[object objectAtIndex:2];
UIImage *tempImage = [[UIImage alloc]init];
tempImage = [object objectAtIndex:1];
[cell.mediaImageView setImage:tempImage]; <=== here crashes
}
}
答:
错误是这样说的:
让我们先翻译一下:是 的内部(优化)类,所以只需将其视为 所以你有实例并尝试对它调用方法。该方法是隐藏的,它是来自 iOS SDK 的后台调用。
但是该方法不存在,它不知道它,因此您得到的错误。[__NSCFConstantString _isSymbolImage]: unrecognized selector sent to instance
__NSCFConstantString
NSString
NSString
NSString
_isSymbolImage
NSString
看到崩溃线:
[cell.mediaImageView setImage:tempImage];
称为内部方法的方法是有意义的,您正在将其视为 .tempImage
UIImage
所以不是.[object objectAtIndex:1]
NSString
UIImage
现在,我建议为您的 .这比每次都不知道里面有什么要好。
您还可以向其添加方法/计算属性,例如 等,以使您的代码更简单、更易读。NSDictionary
appDelegate.localDataForIngestAndErrorVideos
NSArray
NSDictionary
-(NSURL)ingestURL
旁注:
UIImage *tempImage = [[UIImage alloc]init];
tempImage = [object objectAtIndex:1];
alloc/init 是无用的,因为你正在设置值。你无缘无故地做了一个 alloc/init,因为你在之后就忽略了它。
评论
[object objectAtIndex:1];
不是一个 ,而是一个 .你能打印吗.UIImage
NSString
object