您可以像这样致电NSPasteboard
:
[pboard declareTypes:types owner:self];
这意味着粘贴板稍后会要求所有者根据需要提供类型的数据。然而,我无法从文档中找到(也许我错过了一些明显的流血事件),是owner
是否被保留。
在实践中令我担心的是,如果所有者是弱引用,它可能会被解除分配,如果粘贴板然后尝试从中请求数据,则会导致崩溃。
注意:我应该澄清一点,我对此更感兴趣,以帮助追踪错误,而不是让我的应用程序依赖它。但我也希望澄清文档。
答案 0 :(得分:11)
文档:
newOwner
负责写作的对象 数据到粘贴板,如果你没有,则为零 提供所有类型的数据 立即。如果指定newOwner 对象,它必须支持所有的 newTypes中声明的类型 参数,必须保持有效 只要数据得到承诺就可以了 纸板。
翻译:粘贴板可能会也可能不会保留所有者。它是否是一个你不应该依赖的实现细节。只要作为所有者,您有责任保留所有者。
文档所说的“保持有效”实际上指的是您可能懒得提供的代理内容。即如果用户要复制某些内容,则您不希望所有者对复制内容的表示发生更改,因为用户进行了进一步编辑并打算稍后粘贴。
文档没有说明所有者的保留/释放政策(也没有任何形式的一揽子规则声明)。应该澄清(rdar:// 8966209提交)。事实上,对保留/释放行为做出假设是危险的。