Как хранить не-объекты в словаре? - PullRequest
4 голосов
/ 26 августа 2010

Я попытался сохранить селектор (SEL) в NSMutableDictionary, и это вызвало сбой, вероятно, потому что словарь пытается разыменовать его как указатель объекта.Какой стандартный рецепт для хранения не-объектов в словаре?

Ответы [ 3 ]

15 голосов
/ 26 августа 2010

Вы можете преобразовать селекторы в NSString, используя NSStringFromSelector(), и вы можете вернуться в другую сторону с помощью NSSelectorFromString().

SEL aSel = @selector(takeThis:andThat:);

[myDict setObject:NSStringFromSelector(aSel) forKey:someKey];

SEL original = NSSelectorFromString([myDict objectForKey:someKey]);
2 голосов
/ 26 августа 2010

Попробуйте использовать NSMapTable с NSObjectMapKeyCallBacks и NSNonOwnedPointerMapValueCallBacks. Это работает как NSMutableDictionary, но допускает любые указатели в качестве значений, а не только объекты.

Вы также можете сохранить селектор в объекте NSInvocation и использовать его с обычным словарем. Если вам нужно хранить больше, чем Selector (цель, параметры и т. Д.), Возможно, это лучшее решение.

1 голос
/ 26 августа 2010

Оберните их в объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...