Какао (платформа, доступная как на Mac, так и на iOS) реализует несколько общих типов коллекций , включая NSArray
, NSDictionary
и NSSet
, а также их изменяемые варианты. (Leopard также представил NSPointerArray
, NSHashMap
и NSHashTable
, массив / словарь / набор с дополнительными опциями (например, использование слабых ссылок), которые делают их довольно удобными для использования в среде сбора мусора. Однако эти классы в настоящее время недоступны на iPhone и в настоящее время не имеют особого смысла, так как iOS не поддерживает сборку мусора.) Эти классы чрезвычайно быстры и подходят для универсального использования в любом приложении Какао.
Помимо этих предоставленных структур, у вас есть несколько вариантов: (1) создавать более сложные структуры, используя их в качестве строительных блоков, (2) использовать существующий сторонний код или (3) создавать собственные структуры данных с нуля.
Один из вариантов - CHDataStructures.framework , платформа Objective-C с открытым исходным кодом, которую я поддерживаю. Он реализует несколько других общих структур данных, таких как стек / очередь / очередь, связанные списки, отсортированные наборы и многое другое. Эти структуры принимают NSCoding и NSCopying (плюс NSFastEnumeration на 10.5+), поэтому они без проблем работают с собственным кодом Objective-C. Проект позволяет создать статическую библиотеку для использования на iPhone. Поскольку этот фреймворк с открытым исходным кодом, вы можете даже включить в свой проект только соответствующий код, если это необходимо.
В то время как вы можете использовать структуры C ++ и STL, я обнаружил, что смешивание Objective-C и C ++ имеет тенденцию быть намного более запутанным и приводить к неприятным ошибкам, особенно для новичков. Это не удар по С ++, а принцип «когда в Риме». При использовании C ++ STL, конечно, является предпочтительным подходом. Если вы уже микшируете в C ++, вы, вероятно, достаточно комфортны с этим, что STL может быть хорошим выбором; несмотря на это, я обнаружил, что использование нативных коллекций Какао дает более понятный и читаемый код.