2009-04-03 9 views

Antwort

14

ich würde es anders setzen um: Sie könnten riskieren etwas overcomplicating, die lächerlich einfach ist :-)

Ok, ich bin zu sein ein bisschen glib. Wie andere darauf hinweisen, ist Objective-C wirklich nur ein minimaler Satz von Spracherweiterungen in C. Wenn Sie Objective-C-Code schreiben, schreiben Sie eigentlich C. Sie können sogar auf die internen Machenschaften der Objective-C-Laufzeitunterstützung zugreifen mit einigen praktischen C-Funktionen, die Teil der Sprache sind (Nein ... Ich empfehle Ihnen nicht, dies tatsächlich zu tun, es sei denn, Sie wissen wirklich, was Sie tun).

Etwa die einzige Zeit, die ich jemals milde knifflige Momente hatte ist, wenn ich eine Objective-C-Instanz-Methode als Rückruf an eine C-Funktion übergeben wollte. Nehmen wir zum Beispiel an, dass ich eine pure-C-Cross-Plattform-Bibliothek verwende, die Funktionen hat, die einen Rückruf akzeptieren. Ich könnte die Funktion innerhalb einer Objektinstanz aufrufen, um einige Daten zu verarbeiten, und möchte dann, dass diese C-Funktion meine Instanz zurückruft, wenn sie fertig ist, oder als Teil des Erhalts zusätzlicher Eingaben usw. (ein gängiges Paradigma in C). Dies kann mit Funky-Funktion Wrapping getan werden, und einige andere kreative Methoden, die ich gesehen habe, und wenn Sie jemals googeln müssen googlen "objective-c-Methode für c Callback" oder so etwas wird Ihnen die Ware.

Das einzige andere Wort des Rates ist, sicherzustellen, dass Ihre Objekte alle manuell editierten Speicher, die sie für die Verwendung von C-Funktionen erstellen, manuell verwalten. Sie werden wollen, dass Ihre objective-c-Klassen diesen Speicher auf dealloc aufräumen, wenn er tatsächlich fertig ist.

Abgesehen davon, Staub alle Referenzen auf C und viel Spaß!

7

Sie können nicht C 'mischen' und Objective-C: Objective-C ist eine Obermenge von C.

Jetzt, C++ und objektiv- C auf der anderen Seite ...

+0

Wie soll ich die Frage umschreiben? – gargantuan

+0

Es ist keine Frage der Umformulierung. Objective-C enthält alles C, also gibt es überhaupt kein Mischen. –

+1

Ich bekomme Sie, aber denken Sie daran, ich bin neu in C in jedem Geschmack, und lernen Kakao konzentriert sich auf Objective-C. Allerdings ist Chipmunk in reinem C geschrieben. Ich bin also schon auf ein Problem gestoßen, bei dem Structs keine Objekte sind, auch wenn es für einen neuen Typ zunächst gleich aussieht. – gargantuan

1

Objective C ist eine Obermenge von C, so dass es sollte nicht Konflikt.

Außer dass, wie gezeigt here hat reines C verschiedene Konventionen (offensichtlich, da es keinen eingebauten Mechanismus gibt), um OO-Programmierung zu behandeln. In C ist ein Objekt einfach ein (struct *) mit Funktionszeigern.

Verwandte Themen