首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >采用不透明类型的NSSecureCoding

采用不透明类型的NSSecureCoding
EN

Stack Overflow用户
提问于 2013-08-20 00:18:20
回答 1查看 292关注 0票数 0

我有一个Objective类,需要采用NSSecureCoding来在XPC连接上传输。该类具有两个不透明类型(dispatch_queue_tdispatch_group_t)的属性。

在这种情况下,我将如何实现-initWithCoder:-encodeWithCoder:?文档中说这些是类似对象的结构,所以我假设它们在编码/解码时需要转换为/从原始字节。如果是这样的话,我不确定应该使用哪种方法来做到这一点。另一种选择是完全避免对它们进行编码,并在-initWithCoder:中重新创建它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-21 11:47:42

并不是所有不透明类型都有通用解决方案,但您提到了dispatch_queue_tdispatch_group_t。如果调度队列和组对编码对象是私有的,那么就像Kurt所说的那样在-initWithCoder:中重新创建它们。如果它们是共享的,那么它就有点多毛了,但是有时您可以通过归档一个“代理”对象来绕过它,然后在解码对象图之后遍历对象图,用一个新创建的“真实”对象的引用替换对代理项的所有引用。

不过,这听起来有点像反模式。实现NSCoding/NSSecureCoding的类通常是模型类,在模型类的ivars中存在分派队列和组,这是一种危险的标志。我可以想到在模型类ivar中使用私有队列(即序列化对内部状态的多线程访问)的合理理由,而不是共享队列。一般来说,这听起来似乎是有必要重新分解的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18325043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档