【问题标题】:Does NSPasteboard retain owner objects?NSPasteboard 是否保留所有者对象?
【发布时间】:2011-02-07 11:47:21
【问题描述】:

您可以像这样拨打NSPasteboard

[pboard declareTypes:types owner:self];

这意味着粘贴板稍后会要求所有者根据需要提供类型的数据。但是,我无法从文档中找到(也许我错过了一些明显的出血),是 owner 是否被保留。

实际上让我担心的是,如果所有者是 weak 引用,它可能会被释放,如果粘贴板随后尝试向其请求数据,则会导致崩溃。

注意:我可能应该澄清一下,我对此的兴趣更多是为了帮助追踪错误,而不是让我的应用依赖它。但我也希望澄清文档。

【问题讨论】:

    标签: objective-c cocoa appkit nspasteboard


    【解决方案1】:

    文档:

    新主人

    负责写的对象 数据到粘贴板,或者 nil 如果你 提供所有类型的数据 立即地。如果您指定一个 newOwner 对象,它必须支持所有 在 newTypes 中声明的类型 参数并且必须保持有效 as 只要数据上承诺 粘贴板。

    翻译:粘贴板可能会或可能不会保留所有者。它是否是您不应该依赖的实现细节。只要所有者担任所有者,您就有责任保留所有者。

    文档所说的“保持有效”实际上是指您可能懒惰地提供的代理内容。 IE。如果用户要复制某些内容,您不希望所有者对所复制内容的表示发生变化,因为用户进行了进一步的编辑并打算稍后粘贴。

    文档没有说明所有者的保留/释放政策(也没有任何形式的一揽子规则声明)。应该澄清(rdar://8966209 归档)。事实上,对保留/释放行为做出假设是危险的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多