半複雑なビューアニメーションを作成しようとしています(他の行が追加または削除されたときに行がスライドするNSMatrix
フォームのアニメーションバージョンを考えてください)ヘルパークラス。NSDictionaryキーとしてNSViewインスタンスを使用していますか?
私は、さまざまなビュー、順序付けられたインデックス、およびアニメーションに関連付けられたいくつかの他の値を追跡する必要があります。
この目的のために、ビューの順序(インデックス)を把握するためにNSArray
インスタンスを使用しています。このビューをキーとして使用して、ビューをキーとして保持したいと考えています値そのものはネストされた辞書にあります)。私。私は、例えば、(擬似コード)何かこれを行うことができるようにしたい:
NSMutableDictionary* viewValuesDict = [NSDictionary dictionary];
// Loop thru an ordered NSArray
for((NSView*) view in viewsArray) {
// Get some values we'll need later
NSDictionary* associatedValues = [view getSomeValues];
// ...and put them into viewValuesDict...
[viewValuesDict setObject:associatedValues forKey:view];
// and then things break because the NSView 'view'
// doesn't support copyWithZone.... darn
}
問題は、私は、あるキーは使用して追加されているので、辞書のキーとしてNSView
のインスタンスを使用することはできませんもちろん、 copyWithZone
、NSView
は実装されていません。
NSView
インスタンスのユニークなキーを取得するにはどうすればよいですか? [obj description]
を使用することができます。なぜなら、戻ってくるメモリアドレスは完璧なUIDだからです。もちろん、システムは何か別のものを返す可能性がある任意の種類のNSView
サブクラスで動作する必要があります。
他にも何かを試してみるべきですか?キーがちょうどコピーされないNSDictionary
の代替案がありますか?この場合、私は本当にキーをコピーする必要はありません。
Veeeery面白い!私は間違いなくそれらを試してみる必要があります。私が別のコメントで言うように、私はSnow Leopardをターゲットにしていますが、私は非常に長い間ぶつかる必要はないので、 'objc_setAssociatedObject'はおそらく過剰です。 NSMapTableとCFMutableDictionaryRefは両方とも、しかし彼らが完全に法案に適合するかもしれないように聞こえる。ありがとう! – Flambino