【发布时间】:2016-12-12 12:05:41
【问题描述】:
根据 Apple 规范,当一个类支持 NSSecureCoding 时,它应该使用
decodeObjectOfClass:forKey:
在它的 initWithCoder
但由于字典不知道它的内容,它如何支持安全编码?
与属性类已知的自定义对象相反
【问题讨论】:
标签: objective-c cocoa cocoa-touch nssecurecoding
根据 Apple 规范,当一个类支持 NSSecureCoding 时,它应该使用
decodeObjectOfClass:forKey:
在它的 initWithCoder
但由于字典不知道它的内容,它如何支持安全编码?
与属性类已知的自定义对象相反
【问题讨论】:
标签: objective-c cocoa cocoa-touch nssecurecoding
According to this answer Foundation 容器(Array、Dictionary、Set 等...?)并不像人们想象的那么安全。显然只有已知的基础类被认为是安全的,这意味着默认实现在使用 NSSecureCoding 时不允许存储自定义对象。
最重要的一句话:
[...] 如果您直接使用 NSArray() 或其他集合类 你的编码,你需要检查你得到了什么。他们是“安全的” 解码到 Apple 认为解码它们不会 导致缓冲区溢出等,这就是你默认得到的。 [...]
【讨论】: