2009-08-23 8 views
5

Ich habe eine Bibliothek in C geschrieben, die ich gerne in einer Objective-C-App verwenden würde, entweder auf dem Mac oder dem iPhone.Tipps zum Einbinden einer C-Bibliothek in Objective-C

Leider, da diese Bibliothek von Personen im Open Source-Bereich geschrieben wird, ist die Dokumentation ziemlich spärlich und unvollständig. Während ich herausfinden kann, wie man die Sachen in der Bibliothek benutzt, habe ich nicht wirklich einen Überblick über die gesamte Codebasis.

Was ich möchte, ist die Bibliothek in einige leicht verwendbare und übertragbare Klassen in Objective-C zu verpacken.

  • Hat jemand irgendwelche Tipps, wie man das angehen kann?
  • Gibt es Ratschläge, wie Sie am besten eine visuelle Hierarchie der Struktur der Bibliothek erhalten?
  • Wie würde ich entscheiden, wie der Wrapper am besten für Wiederverwendbarkeit und Benutzerfreundlichkeit strukturiert wird?

Alle und alle Hilfe wird sehr geschätzt werden, danke!

Antwort

7

Ich habe das ein paar Mal selbst gemacht. Das kann Spaß machen - es ist Ihre Chance, schlechten Code zu reparieren (oder zumindest zu verstecken)!

Sie können Doxygen verwenden, um eine visuelle Hierarchie des Codes zu erhalten (obwohl ich nur für C++ - Bibliotheken verwendet habe, funktioniert es auch mit C) oder eines der anderen kostenlosen Tools.

Strukturieren Sie Ihre Wrapper-Klasse nicht wie die zugrunde liegende Bibliothek, wenn die Bibliothek nicht gut entworfen oder dokumentiert ist. Dies ist Ihre Chance, die Sichtweise des Benutzers und seine Verwendung des Codes zu berücksichtigen. Schreiben Sie zuerst Ihre Testfälle, um das herauszufinden, und/oder sprechen Sie mit einigen Leuten, die die Bibliothek bereits benutzen.

Zwei schöne Designmuster, die zu dem passen, was Sie tun, sind Adapter und Facade.

+2

+1. Sie sollten einige nette Schnittstellen definieren, die das tun, was Sie zuerst wollen, und dann die Implementierungen mit der C-Bibliothek ausfüllen. –

+0

Wenn Sie Schnittstellen sagen, meinen Sie Benutzerschnittstellen oder Code-Schnittstellen? – Jasarien

+0

Ich denke, er meint Code-Schnittstellen. –

2

Erstens, denken Sie daran: eine C-Bibliothek ist eine Objective-C-Bibliothek. Sie müssen überhaupt keine Umwicklung vornehmen, obwohl Sie es möglicherweise möchten, wenn die Bibliotheksschnittstelle besonders umständlich ist.

Zweitens, wenn Sie entscheiden, dass Sie einen Bibliothekswrapper schreiben möchten, halten Sie es einfach. Identifizieren Sie die Kernfunktionen der Bibliothek, die Sie tatsächlich verwenden möchten, und überlegen Sie, wie Sie diese Funktionen und diese Funktionen unter Berücksichtigung Ihrer beabsichtigten Verwendung am besten mit einer Schnittstelle versehen können. Entwerfen Sie eine Schnittstelle, mit der Sie arbeiten möchten, und implementieren Sie sie dann über die Bibliothek.

0

Da ARC (Automatic Reference Counting) zu den Apple Compilern und Bibliotheken hinzugefügt wurde, sind Objective-C und C nicht mehr so ​​frei austauschbar. (Here's eine Liste von ARC-Dokumentation und Tutorials.) Sie müssen die Speicherzuordnungsprobleme viel gründlicher betrachten, und Sie möchten vielleicht nur die Bibliotheken "überbrücken". Sehen Sie this SO question und einige der Links von dort, über Apple Brücken zwischen Obj-C und C-Bibliotheken.

Verwandte Themen