NSKeyedArchiver/Unarchiver不使用在IOS8中使用IMAGENAME创建的UIImage(但在iOS7中可用)
在iOS8下运行似乎破坏了我用来维护用户对背景图像偏好的一些代码。我从一个默认图像(FACE1.png)开始,并将其作为默认首选项存储。但是,在取消归档图像时,如果仍设置了默认值,则取消归档的图像是不好的 下面是一段代码来说明出现了什么问题NSKeyedArchiver/Unarchiver不使用在IOS8中使用IMAGENAME创建的UIImage(但在iOS7中可用),ios,ios8,Ios,Ios8,在iOS8下运行似乎破坏了我用来维护用户对背景图像偏好的一些代码。我从一个默认图像(FACE1.png)开始,并将其作为默认首选项存储。但是,在取消归档图像时,如果仍设置了默认值,则取消归档的图像是不好的 下面是一段代码来说明出现了什么问题 UIImage *segment1Image = [UIImage imageNamed:@"FACE1.png"]; if (!segment1Image) { NSLog(@"segment1Image nil pointer"); } els
UIImage *segment1Image = [UIImage imageNamed:@"FACE1.png"];
if (!segment1Image) {
NSLog(@"segment1Image nil pointer");
} else {
NSLog(@"The segment1Image image size is %f, %f", segment1Image.size.width, segment1Image.size.height);
NSData *segment1ArchiveData = [NSKeyedArchiver archivedDataWithRootObject:segment1Image];
if (!segment1ArchiveData) {
NSLog(@"segment1ArchiveData nil pointer, NSKeyedArchiver couldn't create archive");
} else {
NSLog(@"The archive is %d bytes", [segment1ArchiveData length]);
UIImage *unarchivedSegment1Image = [NSKeyedUnarchiver unarchiveObjectWithData:segment1ArchiveData];
if (!unarchivedSegment1Image) {
NSLog(@"unarchivedSegment1Image nil pointer, NSKeyedUnarchiver couldn't restore from archive");
} else {
NSLog(@"The unarchivedSegment1Image image size is %f, %f", unarchivedSegment1Image.size.width, unarchivedSegment1Image.size.height);
}
}
}
在iOS 7下,将加载映像、创建存档并还原存档。在控制台上生成以下输出
分段1图像大小为508.000000、642.000000存档为408字节
未归档分段1图像的图像大小为508.000000、642.000000 在iOS8下,加载映像,创建归档文件(使用不同的“是”数),恢复归档文件时,UIImage对象的高度和宽度为0 我在控制台上看到以下输出 分段1图像大小为508.000000、642.000000
存档为653字节
未归档分段1图像的图像大小为0.000000,0.000000 如果我 我可以成功地创建PNG表示的存档和取消存档,但是我想知道是否有更好的解决方法或方法来修复我的代码,以取消存档使用ImageName创建的UIImage
NSData *fullImageData = UIImagePNGRepresentation(segment1Image);