Альтернативное решение состоит в том, чтобы определить класс, который имеет методы, которые обращаются к содержимому указателя / манипулируют им, а затем добавляют экземпляры этого в массив.
Не беспокойтесь о создании подкласса NSValue, поскольку он действительно ничего не добавляет к решению.
Что-то вроде:
@interface FooPtr:NSObject
{
void *foo;
}
+ fooPtrWithFoo: (void *) aFoo;
.... methods here ...
@end
Я специально выбрал непрозрачный (void *), так как он говорит клиенту "не трогай мои внутренности напрямую". В реализации сделайте что-то вроде #define FOOPTR(foo) ((Foo *) foo)
Затем вы можете FOOPTR(foo)->bar;
, как вам нужно в ваших различных методах.
Выполнение этого также упрощает добавление логики, специфичной для Objective C, поверх базового типа данных. Сортировка - это всего лишь вопрос реализации правильного метода. Хеширование / словарные записи теперь можно хэшировать на содержимом foo и т. Д. *