2009-08-23 15 views
5

Mam bibliotekę napisaną w języku C, którą chciałbym użyć w aplikacji Objective-C, na Macu lub iPhonie.Porady dotyczące zawijania biblioteki C w Objective-C

Niestety, ponieważ ta biblioteka jest pisana przez osoby w przestrzeni open source, dokumentacja jest dość rzadka i niekompletna. Chociaż mogę wymyślić, jak korzystać z rzeczy w bibliotece, tak naprawdę nie mam przeglądu całej podstawy kodu.

Co chciałbym zrobić, to umieścić bibliotekę w łatwych do wykorzystania i przeniesionych klasach w Objective-C.

  • Czy ktoś ma jakieś wskazówki, jak się do tego podejść?
  • Wszelkie porady dotyczące najlepszego sposobu uzyskania wizualnej hierarchii struktury biblioteki?
  • W jaki sposób chciałbym podjąć decyzję, w jaki sposób najlepiej zorganizować opakowanie, aby umożliwić jego ponowne użycie i łatwość obsługi?

Każda pomoc będzie bardzo ceniona, dziękuję!

Odpowiedz

7

Zrobiłem to kilka razy sam. To może być fajne - masz szansę naprawić (lub przynajmniej ukryć) zły kod!

Możesz użyć Doxygen, aby uzyskać wizualną hierarchię kodu (choć używałam go tylko do bibliotek C++, działa również z C) lub dowolnego innego wolnego narzędzia.

Nie strukturyzuj swojej klasy opakowania, tak jak biblioteka podstawowa, jeśli biblioteka nie jest dobrze zaprojektowana lub udokumentowana. To jest Twoja szansa, aby rozważyć punkt widzenia użytkownika i sposób, w jaki będą korzystać z kodu. Napisz najpierw przypadki testowe, aby to zrozumieć i/lub porozmawiaj z kilkoma osobami, które już korzystają z biblioteki.

Dwa ładne wzory, które pasują do tego, co robisz, to: Adapter i Facade.

+2

+1. Powinieneś zdefiniować kilka fajnych interfejsów, które robią to, co chcesz, a następnie wypełniaj implementacje używając biblioteki C. –

+0

Kiedy mówisz interfejsy, masz na myśli interfejsy użytkownika lub interfejsy kodu? – Jasarien

+0

Myślę, że on oznacza interfejsy kodowe. –

2

Po pierwsze, pamiętaj: biblioteka C to biblioteka Objective-C. W rzeczywistości nie musisz wykonywać żadnego zawijania, chociaż możesz chcieć, jeśli interfejs biblioteki jest szczególnie kłopotliwy.

Po drugie, jeśli zdecydujesz, że chcesz napisać opakowanie biblioteki, zachowaj to w prostocie. Zidentyfikuj podstawowe funkcje biblioteki, których faktycznie zamierzasz używać, i zastanów się, jak najlepiej zapewnić interfejs do tych funkcji i tylko tych funkcji, mając na uwadze zamierzone użycie. Zaprojektuj interfejs, z którym chcesz pracować, a następnie zaimplementuj go w bibliotece.

0

Ponieważ ARC (Automatyczne liczenie odwołań) zostało dodane do kompilatorów i bibliotek Apple, Objective-C i C nie są już tak swobodnie wymienialne. (Here's lista dokumentacji i samouczków ARC.) Musisz dokładniej rozważyć kwestie alokacji pamięci i możesz po prostu chcieć "połączyć" biblioteki. Zobacz, this SO question i niektóre z nich, o tym, w jaki sposób Apple łączy się z bibliotekami Obj-C i C.

Powiązane problemy