Советы по переносу библиотеки C в Objective-C - PullRequest
5 голосов
/ 24 августа 2009

У меня есть библиотека, написанная на C, которую я хотел бы использовать в приложении Objective-C, либо на Mac, либо на iPhone.

К сожалению, поскольку эта библиотека пишется отдельными людьми в открытом пространстве, документация довольно скудная и неполная. Хотя я могу понять, как использовать материал в библиотеке, у меня нет общего обзора всей базы кода.

Что я хотел бы сделать, так это обернуть библиотеку в несколько легко используемых и переносимых классов в Objective-C.

  • У кого-нибудь есть советы, как к этому подойти?
  • Какой-нибудь совет, как лучше получить визуальную иерархию структуры библиотеки?
  • Как мне решить, как лучше структурировать оболочку для повторного использования и простоты использования?

Любая помощь будет принята с благодарностью, спасибо!

Ответы [ 3 ]

7 голосов
/ 24 августа 2009

Я сам делал это несколько раз. Это может быть весело - это ваш шанс исправить (или хотя бы спрятать) плохой код!

Вы можете использовать Doxygen для получения визуальной иерархии кода (хотя я использовал его только для библиотек C ++, он также работает с C) или любых других бесплатных инструментов.

Не структурируйте свой класс-оболочку, как лежащую в основе библиотеку, если библиотека не разработана или не документирована должным образом. Это ваш шанс рассмотреть точку зрения пользователей и то, как они собираются использовать код. Сначала напишите свои тестовые примеры, чтобы выяснить это, и / или поговорите с некоторыми людьми, которые уже используют библиотеку.

Два хороших шаблона проектирования, которые соответствуют тому, что вы делаете: Адаптер и Фасад .

2 голосов
/ 24 августа 2009

Во-первых, помните: библиотека C является библиотекой Objective-C. На самом деле вам вообще не нужно делать какие-либо обертки, хотя вы можете захотеть, если интерфейс библиотеки особенно громоздок.

Во-вторых, если вы решили, что хотите написать библиотечную оболочку, сделайте это просто. Определите основные функции библиотеки, которые вы фактически планируете использовать, и подумайте о том, как наилучшим образом обеспечить интерфейс только для этих функций и этих функций с учетом предполагаемого использования. Разработайте интерфейс, с которым вы хотите работать, а затем внедрите его в библиотеку.

0 голосов
/ 02 июля 2012

Поскольку ARC (автоматический подсчет ссылок) был добавлен в компиляторы и библиотеки Apple, Objective-C и C больше не могут свободно заменяться. ( Вот список документации и руководств по ARC.) Вам нужно рассмотреть вопросы выделения памяти гораздо более тщательно, и вы можете просто захотеть «соединить» библиотеки. См. этот SO вопрос и некоторые ссылки оттуда о том, как Apple соединяет библиотеки Obj-C и C.

...