Разработка iPhone: Какие структуры данных доступны? - PullRequest
8 голосов
/ 20 апреля 2009

Это очень новый вопрос, но предоставляет ли iPhone API какие-либо структуры данных для работы (например, связанный список, хэш-карту и т. Д.)?

Ответы [ 3 ]

18 голосов
/ 20 апреля 2009

Вы можете использовать любую структуру данных, реализованную на C или C ++ с iPhone SDK.

Например, я использую стандартную библиотеку много.

Кроме того, вы также можете использовать сложные структуры данных Какао, такие как:

  1. NSArray
  2. NSDictionary (хэш)
  3. NSSet (набор)

Вы можете иметь сопроводительный документ на них здесь .

12 голосов
/ 15 июня 2009

Какао (платформа, доступная как на 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 может быть хорошим выбором; несмотря на это, я обнаружил, что использование нативных коллекций Какао дает более понятный и читаемый код.

0 голосов
/ 20 апреля 2009

Язык Objective-C не предоставляет никаких внутренних структур данных, таких как связанные списки и т. Д. Однако, поскольку он основан на кодовой базе C / C ++, все, что может быть реализовано в C или C ++, может быть выполнено непосредственно в Objective. -C, включая связанные списки и другие структуры данных.

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