1

NSPasteboard次のように呼び出すことができます。

[pboard declareTypes:types owner:self];

つまり、ペーストボードは後で必要に応じてタイプのデータを提供するよう所有者に要求します。ただし、ドキュメントから見つけることができない (そして、明らかな出血を見逃している可能性があります) のは、owner保持されているかどうかです。

実際には、私が心配しているのは、所有者が弱い参照である場合、割り当てが解除され、ペーストボードがそこからデータを要求しようとするとクラッシュする可能性があることです。

注:アプリを依存させるよりも、バグを追跡するための支援としてこれに関心があることを明確にする必要があります。しかし、私はドキュメントも明確にしたいと思っています。

4

1 に答える 1

11

ドキュメント:

新しい所有者

ペーストボードへのデータの書き込みを担当するオブジェクト、またはすべてのタイプのデータをすぐに提供する場合は nil。newOwner オブジェクトを指定する場合は、newTypes パラメーターで宣言されたすべての型をサポートする必要があり、データがペーストボードで約束されている限り有効である必要があります。

翻訳: ペーストボードは所有者を保持する場合と保持しない場合があります。そうであるかどうかは、依存すべきではない実装の詳細です。所有者として行動している限り、所有者を保持するのはあなたの責任です。

「有効なまま」についてドキュメントが言っていることは、実際には、遅延して提供する可能性のあるプロキシされたコンテンツを指しています。つまり、ユーザーが何かをコピーした場合、ユーザーが後で貼り付けようとしてさらに編集を行ったときに、コピーされたものの所有者の表現が変更されることは望ましくありません。

ドキュメントには、所有者の保持/解放ポリシーについては何も記載されていません (また、包括的なルールステートメントもありません)。明確にする必要があります (rdar://8966209 ファイル)。そのままでは、保持/解放の動作について仮定することは危険です。

于 2011-02-07T17:32:17.287 に答える