Я пытаюсь создать полусложный набор анимаций вида (представьте себе анимированную версию формы NSMatrix
, в которой строки перемещаются по мере добавления или удаления других строк) и создания анимации. сделать маленький вспомогательный класс.
Там я должен отслеживать различные виды, их упорядоченные индексы и несколько других значений, связанных с их анимацией.
Для этого я использую экземпляр NSArray
, чтобы отслеживать порядок (индексы) представлений, и я хотел бы использовать NSDictionary
с представлениями в качестве ключей для отслеживания значения (сами значения находятся во вложенных словарях). То есть Я хотел бы иметь возможность сделать что-то это, например (псевдокод):
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
, где ключи просто не копируются? Потому что в этом случае мне действительно не нужно копировать ключи.