gpt4 book ai didi

iPhone - 为什么文档说 UIImageView 符合 NSCoding ?

转载 作者:行者123 更新时间:2023-12-03 18:26:22 25 4
gpt4 key购买 nike

理想情况下,NSCoding 兼容类将使用encodeWithCoder: 和 initWithCoder: 按预期工作(至少我直到最近都是这么认为),而开发人员不必担心例程内部发生的事情(除非我对 NSCoding 兼容类的想法是完全搞砸了!)

UIImageView 类符合 NSCoding 标准。因此,我不必担心如何使用 NSKeyedArchiver 和 NSKeyedUnarchiver 类对其进行序列化/反序列化。但每次我尝试对 UIImageView 对象进行编码时,都会收到 UIImage 无法识别encodeWithCoder: 方法的错误。

现在 UIImageView 内部使用 UIImage 对象。但编码本身不应该解决这个问题吗?

或者文档中指定的 NSCoding 合规性只是让用户知道他们可以实现 initWithCoder 和encodeWithCoder 方法?

有人可以帮我澄清一下吗?我彻底困惑了!

最佳答案

该文档具有误导性 - 正如您所说,UIImage 不符合 NSCoding 。您可以通过自己完成工作来解决它(以原始方式):

@interface UIImage (NSCoding)
- (id)initWithCoder:(NSCoder *)decoder;
- (void)encodeWithCoder:(NSCoder *)encoder;
@end

@implementation UIImage (NSCoding)
- (id)initWithCoder:(NSCoder *)decoder {
NSData *pngData = [decoder decodeObjectForKey:@"PNGRepresentation"];
[self autorelease];
self = [[UIImage alloc] initWithData:pngData];
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:UIImagePNGRepresentation(self) forKey:@"PNGRepresentation"];
}
@end

关于iPhone - 为什么文档说 UIImageView 符合 NSCoding ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1072700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com