Lerne zuerst C, bevor du Objective-C lernst [geschlossen]

107

Als aufstrebender Apple-Entwickler möchte ich die Meinung der Community einholen, wenn es besser ist, zuerst C zu lernen, bevor ich zu Objective-C und letztendlich zum Cocoa Framework übergehe.

Mein Bauch sagt, lerne C, was mir eine gute Grundlage gibt.

Lerche
quelle

Antworten:

163

Ich würde zuerst C lernen. Ich habe C gelernt (und viel in C gemacht), bevor ich zu Obj-C wechselte. Ich habe viele Kollegen, die nie echte C-Programmierer waren. Sie haben mit Obj-C angefangen und nur so viel C wie nötig gelernt.

Hin und wieder sehe ich, wie sie ein Problem in Obj-C vollständig lösen, was manchmal zu sehr ungeschickten Lösungen führt. Normalerweise ersetze ich dann einen Obj-C-Code durch reinen C-Code (schließlich können Sie sie beliebig mischen, der Inhalt einer Obj-C-Methode kann vollständig reiner C-Code sein). Ohne die Absicht, einen Obj-C-Programmierer zu beleidigen, gibt es Lösungen, die in Obj-C sehr elegant sind. Dies sind Lösungen, die dank Objekten einfach viel besser funktionieren (und aussehen)(OOP-Programmierung kann komplexe Programme viel schöner machen als funktionale Programmierung; Polymorphismus zum Beispiel ist eine brillante Funktion) ... und ich mag Obj-C wirklich (viel mehr als C ++! Ich hasse die C ++ - Syntax und einige Sprachfunktionen sind einfach übertrieben und meiner Meinung nach zu schlechten Entwicklungsmustern führen); Wenn ich jedoch manchmal den Obj-C-Code meiner Kollegen neu schreibe (und das tue ich wirklich nur, wenn ich dies für absolut notwendig halte), ist der resultierende Code normalerweise 50% kleiner und benötigt nur 25% des verwendeten Speichers vor und ist etwa 400% schneller zur Laufzeit.

Was ich hier zu sagen versuche: Jede Sprache hat ihre Vor- und Nachteile. C hat Vor- und Nachteile, ebenso wie Obj-C. Das wirklich großartige Feature von Obj-C (deshalb mag ich es sogar mehr als Java) ist, dass Sie nach Belieben zu einfachem C und wieder zurück springen können. Warum ist das so ein tolles Feature? Weil genau wie Obj-C viele der Nachteile von reinem C behebt, kann reines C einige der Nachteile von Obj-C beheben. Wenn Sie sie zusammenmischen, erhalten Sie ein sehr starkes Team.

Wenn Sie nur Obj-C lernen und keine Ahnung von C haben oder nur die Grundlagen kennen und nie versucht haben, wie elegant es einige häufig auftretende Probleme lösen kann, haben Sie tatsächlich nur die Hälfte von Obj-C gelernt. C ist ein grundlegender Bestandteil von Obj-C. Die Fähigkeit, C jederzeit und überall zu verwenden, ist ein grundlegendes Merkmal davon.

Ein typisches Beispiel war ein von uns verwendeter Code, der Daten in base64 codieren musste, für den wir jedoch keine externe Bibliothek verwenden konnten (keine OpenSSL-Bibliothek). Wir haben einen base64-Encoder verwendet, der vollständig mit Cocoa-Klassen geschrieben wurde. Es funktionierte einwandfrei, aber als wir 200 MB Binärdaten codierten, dauerte es eine Ewigkeit und der Speicheraufwand war nicht akzeptabel. Ich habe es durch einen winzigen, ultrakompakten Base64-Encoder ersetzt, der vollständig als eine C-Funktion geschrieben wurde (ich habe den Funktionskörper in den Methodenkörper kopiert, die Methode hat NSData als Eingabe genommen und NSString als Ausgabe zurückgegeben, aber innerhalb der Funktion war alles C). Der C-Encoder war so viel kompakter, dass er den reinen Cocoa-Encoder um den Faktor 8 in der Geschwindigkeit übertraf und der Speicheraufwand auch viel geringer war. Das Codieren / Decodieren von Daten, das Herumspielen mit Bits und ähnliche Aufgaben auf niedriger Ebene sind nur die Stärken von C.

Ein weiteres Beispiel war ein UI-Code, der viele Grafiken zeichnete. Zum Speichern der zum Zeichnen der Diagramme erforderlichen Daten haben wir NSArrays verwendet. Eigentlich NSMutableArray, da das Diagramm animiert wurde. Ergebnis: Sehr langsame Grafikanimation. Wir haben alle NSArrays durch normale C-Arrays ersetzt, Objekte mit Strukturen (nachdem alle Diagrammkoordinateninformationen nichts sind, was Sie in Objekten haben müssen), Enumeratorzugriff mit einfachen for-Schleifen und haben begonnen, Daten zwischen den Arrays mit memcopy zu verschieben, anstatt Daten von einem Array zu übernehmen der andere, Index für Index. Das Ergebnis: Eine Beschleunigung um den Faktor 4. Das Diagramm wird auch auf älteren PPC-Systemen reibungslos animiert.

Die Schwäche von C ist, dass jedes komplexere Programm auf lange Sicht hässlich wird. C-Anwendungen lesbar, erweiterbar und verwaltbar zu halten, erfordert viel Disziplin von einem Programmierer. Viele Projekte scheitern, weil diese Disziplin fehlt. Obj-C erleichtert Ihnen die Strukturierung Ihrer Anwendung mithilfe von Klassen, Vererbung, Protokollen usw. Trotzdem würde ich keine reine C-Funktionalität über die Grenzen einer Methode hinweg verwenden, es sei denn, dies ist erforderlich. Ich bevorzuge es, den gesamten Code in einer Objective-C-App innerhalb der Methode eines Objekts zu belassen. alles andere macht den Zweck einer OO-Anwendung zunichte. Innerhalb der Methode verwende ich jedoch manchmal ausschließlich reines C.

Mecki
quelle
und wenn ich C ++ bereits kenne und Objective-C für iPhone / iTouch-Entwicklung lernen möchte, ist es dann notwendig, C überhaupt zu lernen?
Chester89
11
@ chester89: Wenn Sie C ++ bereits kennen, wissen Sie genug über C, um mit Objective-C zu beginnen.
Sven
Sven hat recht, C ++ ist so komplex und verwendet bereits so viel reines C. Wenn Sie C ++ wirklich gut kennen, sollten Sie C auch gut genug kennen.
Mecki
Dies ist meine Lieblingsüberlegung zu diesem Thema, danke.
Morkrom
1
@FrederikWitte Lassen Sie C ++ weg, es wird Sie nur als Anfänger verwirren (und es ist keine Sprache, die Sie für die mobile Entwicklung benötigen würden). Beginnen Sie mit Java, es ist eine gute Unterrichtssprache und es reicht aus, nur Java zu kennen, um es für Android zu entwickeln (möglicherweise, es sei denn, Sie möchten Spiele oder Videoplayer oder so schreiben). Dann lerne C und schließlich Obj-C, es sei denn, du willst all das überspringen und stattdessen Swift lernen. Deine Entscheidung.
Mecki
25

Sie können C und Objective-C leicht genug gleichzeitig lernen - es ist sicherlich nicht erforderlich, die Minutien von C (einschließlich Zeigerarithmetik usw.) zu lernen, bevor Sie mit den Ergänzungen von Objective-C zur Sprache beginnen, und als Anfänger Wenn Sie schnell mit Objective-C beginnen, können Sie schneller mit dem "Denken in Objekten" beginnen.

In Bezug auf die verfügbaren Ressourcen setzt die Dokumentation von Apple normalerweise voraus, dass Sie mit C vertraut sind. Daher ist es für Sie nicht von großem Vorteil, mit der Programmiersprache Objective-C 2.0 zu beginnen. Ich würde in eine Kopie von Programming in Objective-C von Stephen Kochan investieren (je nachdem, wie schnell Sie loslegen möchten, können Sie auf die zweite Ausgabe warten):

Programmieren der Objective-C-Entwicklerbibliothek Programmieren der Objective-C 2.0-Entwicklerbibliothek

Es setzt keine Vorkenntnisse voraus und lehrt Sie Ziel-C und so viel C, wie Sie benötigen.

Wenn Sie sich ein wenig ehrgeizig fühlen, können Sie mit Scott Stevensons "Learn C" -Tutorial beginnen , das jedoch einige Voraussetzungen erfüllt ("Sie sollten bereits mindestens eine Skript- oder Programmiersprache kennen, einschließlich Funktionen, Variablen und Schleifen. Außerdem müssen Befehle in das Mac OS X-Terminal eingegeben werden. ").

(Nur zur Veranschaulichung und für den Kontext: Ich habe beide gleichzeitig 1991 gelernt - es schien mir keinen Schaden zuzufügen. Ich hatte jedoch einen Hintergrund in BASIC, Pascal, Logo und LISP. )

mmalc
quelle
2
Sie sollten es absolut nicht für notwendig halten, zuerst C zu lernen. Vor allem, wenn Sie bereits eine Sprache wie C # von Java kennen. C # und Java haben dem Ziel C viel zu verdanken. Obwohl C # viel mehr Helsbergs Erfahrung und Fehlern mit Delphi zu verdanken hat.
Daniel Honig
18

Ich habe viel über dieses Problem nachgedacht, bevor ich mein Buch über Objective-C geschrieben habe. Erstens glaube ich wirklich, dass das Erlernen der C-Sprache vor dem Erlernen von Objective-C der falsche Weg ist. C ist ein VerfahrenSprache mit vielen Funktionen, die für die Programmierung in Objective-C nicht erforderlich sind, insbesondere für Anfänger. In der Tat widerspricht der Rückgriff auf einige dieser Merkmale der Einhaltung einer guten objektorientierten Programmiermethode. Es ist auch keine gute Idee, alle Details einer prozeduralen Sprache zu lehren (und die Lösung eines Problems mit Funktionen und strukturierten Programmiertechniken anzugreifen), bevor Sie eine objektorientierte lernen. Dies kann den Programmierer in die falsche Richtung führen und möglicherweise zur Entwicklung einer falschen Ausrichtung und Denkweise für die Förderung einer guten objektorientierten Programmierdisziplin führen. Nur weil Objective-C eine Erweiterung der C-Sprache ist, heißt das nicht, dass Sie zuerst C lernen müssen!

Ich denke, dass das Unterrichten von Objective-C und der zugrunde liegenden C-Sprache als eine einzige integrierte Sprache der richtige Ansatz ist. Es gibt keinen Grund zu erfahren, dass eine "for" -Anweisung aus der C-Sprache und nicht aus der übergeordneten Objective-C-Sprache stammt. Warum sollten Sie vorher etwas über Dinge wie C-Arrays und Strings (und deren Manipulation) im Detail lernen?Lernen Sie zum Beispiel Array- (NSArray) und String-Objekte (NSString) kennen? Viele C-Texte verwenden viel Zeit für Strukturen und Zeiger auf Strukturen und durchlaufen Arrays mit Zeigern. Sie können jedoch mit dem Schreiben von Objective-C-Programmen beginnen, ohne diese C-Sprachfunktionen zu kennen. Und für einen unerfahrenen Programmierer ist das eine große Sache. Dies verkürzt nicht nur die Lernkurve, sondern reduziert auch die Menge an Material, die zum Schreiben von Objective-C-Programmen gelernt (und teilweise selektiv herausgefiltert) werden muss.

Ich bin damit einverstanden, dass Sie die meisten, wenn nicht alle der zugrunde liegenden C-Funktionen kennenlernen möchten, aber viele können verschoben werden, bis Sie die Klassen und Methoden genau definiert, mit Objekten und Nachrichtenausdrücken gearbeitet und die Konzepte der Vererbung und verstanden haben Polymorphismus sind gut verstanden.

Skochan
quelle
Dies alles ist für diejenigen, die schnell lernen wollen, ohne zu kämpfen und tief zu verstehen. Ich unterrichte einen kompletten Programmier-Noob (während ich über 11 Jahre Programmiererfahrung habe) zum Programmieren und habe früher andere unterrichtet (aber ich bin kein Lehrer, um es klar zu machen). Und weißt du was? All diese Konzepte, an die wir alle gewöhnt sind, sind für Anfänger so kompliziert und nicht intuitiv! C ist eine großartige Möglichkeit, das Zeug mit dem niedrigen Level zu verstehen, damit es in Zukunft keine Magie für sie sein wird. Das heißt, für einen besseren Programmierer ist die Lernkurve mit C zunächst besser mit seinen barbarischen Regeln =)
MANIAK_dobrii
15

Ich würde gleich in Ziel C eintauchen - wenn Sie bereits ein paar Sprachen im Griff haben, ist es nicht die Syntax, die die Lernkurve darstellt, sondern Kakao.

Paul Dixon
quelle
1
Nachdem dies gesagt ist, gibt es viel mehr Material zum Lernen von C. Es hat sich herausgestellt, dass dies der schwierigste Teil von ObjC war. Es fehlte an Material, das gut organisiert und klar war, genug Tiefe hatte, um es mit C- oder C ++ - Material zu vergleichen und Ihnen wirklich zu helfen, zu verstehen, was es war drinnen los.
Spanky
10

Ich denke, dass das Erlernen von C zum größten Teil eine gute Idee ist, egal in welchem ​​Bereich Sie sich befinden, zumindest um das Innenleben der Softwareentwicklung zu verstehen, bevor Sie vorverpackte Waren verwenden, wenn etwas schief geht Sie haben eine bessere Chance, das Innenleben zu verstehen. Auf SO wird viel darüber diskutiert, und es ist eine eher subjektive Frage, aber im Allgemeinen werden Sie C in Ihrem Objective-C-Code von Natur aus verwenden, also liegt es wohl wirklich an Ihnen. Ich bin ein Grundmensch, aber manchmal kann es im Weg stehen und ich kenne mehrere kluge Leute, die sich von oben nach unten durchgearbeitet haben. Ich denke, der wichtige Teil ist, dass Sie das Innenleben so verstehen, wie es will Unterscheiden Sie Ihre Fähigkeiten von denen, die Ihre Fähigkeiten nicht so gut verbessern.

TheXenocide
quelle
Das Erlernen von C zuerst kann auch Ihre Sicht auf die OO-Programmierung verzerren, wenn Sie nicht bereits darin verankert sind. Das Mischen von strukturierter und prozeduraler Codierung ist nicht gut. Aber es stimmt auch, dass OO an vielen Stellen, an denen C glänzt, an Wert verliert, beispielsweise beim Schreiben von Code auf niedrigerer Ebene.
Daniel Honig
1
Mein Grund, jedem Entwickler vorzuschlagen, irgendwann C zu lernen, basiert zumindest auf der Idee, dass sogar die OO-Sprachen genau die Anweisungen kompilieren, die C am Ende ausführt. Variablen für Objekte verwenden Zeiger, Garbage Collectors verwenden malloc und free, Dateien werden mithilfe von Betriebssystemhandles gesperrt. Wenn in einer Java- oder C # -Anwendung etwas schief geht, kann das Wissen um diese Grundlagen Ihr Verständnis der Fehler erheblich verbessern. Das Verständnis der durchgeführten Ressourcenzuweisung führt auch dazu, dass informierterer Code geschrieben wird, der für einen bestimmten Kontext eine optimale Leistung erbringt.
TheXenocide
7

Es ist eine gute Idee, C zu lernen, bevor Sie Objective-C lernen, eine strikte Obermenge von C. Dies bedeutet, dass Objective-C den gesamten normalen C-Code unterstützen kann, sodass der Code, der C-Programmen gemeinsam ist, auch in Objective- angezeigt wird. C-Code.

Neben der rein sprachlichen Betrachtung werden Sie feststellen, dass Mac OS X ein vollständiges Unix-Betriebssystem ist. Alle Bibliotheken auf Systemebene sind in C geschrieben.

Es ist wahrscheinlich möglich, beide gleichzeitig zu lernen, aber ich denke, Sie werden Objective-C mehr schätzen und verstehen, wenn Sie zuerst über solide Kenntnisse in C verfügen.

Doug
quelle
5

Ich würde Objective-C lernen und so viel C lernen, wie Sie brauchen, während Sie fortfahren.

Die Bereiche von C, von denen Sie nicht viel abhängen:

  • Zeigerarithmetik und Arrays. Ich habe überhaupt keine C-Arrays verwendet.
  • C-Saiten. Die Saiten von Objective-C machen die Arbeit schöner und sicherer.
  • Manuelle Speicherverwaltung, wenn Sie GC in Obj-C 2.1 verwenden. Ich empfehle diese Route aus Gründen der Entwicklungsgeschwindigkeit und Leistung.
Giao
quelle
6
Eine Einschränkung: Die Speicherbereinigung in Objective-C ist nicht auf allen Plattformen (insbesondere auf dem iPhone) verfügbar.
Mark Bessey
5

Wenn Sie Objective-C und Cocoa lernen, können Sie das Lernen von C-Bits nicht vermeiden. Beispielsweise werden Rechtecke häufig durch CGRect, eine C-Struktur, dargestellt.

Wenn Sie Zeit haben, lernen Sie auf jeden Fall C. Wie andere hier gesagt haben, eignet sich Kochans Buch (zweite und erste Ausgabe) hervorragend als Buch zum Eintauchen.

mattwestbright
quelle
4

Es gibt viele Dinge, die Sie in Objective-C nicht nur tun können, daher ist das Erlernen einiger grundlegender C-Fähigkeiten ziemlich wichtig. Sie müssen zumindest die Variablendeklarationen und die grundlegenden Funktionen der C-Bibliothek verstehen, sonst sind Sie frustriert.

Mark Bessey
quelle
3

Ehrlich gesagt basieren so viele Sprachen auf der C-Syntax, dass es gut ist, damit vertraut zu sein. Ich würde ein oder zwei Wochen brauchen, um mich mit C vertraut zu machen.

Das heißt, ich habe mir nur Ziel C beigebracht, und ich muss ehrlich sein: Ich fand meine C-Erfahrung nicht so nützlich, wie ich gedacht hätte. Ziel C hat mir definitiv die Augen geöffnet.

user25967
quelle
3

Sie können direkt in Objective-C springen, mit den folgenden Vorteilen:

  1. Sie werden "etwas" C im Weg lernen.
  2. Sie lernen die für Sie relevanten C-Teile kennen.

Zumindest fällt es mir leichter, eine neue Sprache zu lernen, wenn ich an einer bestimmten App oder einem bestimmten Beispiel interessiert bin, und ich versage, wenn ich etwas anderes lernen muss, das nicht genau das ist, woran ich interessiert bin.

Sie können Ihr C-Wissen später jederzeit verfeinern, wenn Sie sich für die Programmierung auf niedrigerer Ebene interessieren.

OscarRyz
quelle
3

Besser, ich weiß es nicht, noch weniger, da ich mit Objective-C nicht vertraut bin.
Aber die Grundlagen von C sind nicht so schwer zu lernen, es ist keine sehr komplexe Sprache (in Bezug auf die Syntax, nicht in Bezug auf das Mastering!), Also machen Sie es, es wird keine Zeitverschwendung sein.
Persönlich denke ich, dass es immer eine gute Idee ist, C zu lernen. Es gibt einen guten Einblick in die Funktionsweise des Computers. Immerhin sind die meisten Sprachen und Systeme immer noch in C geschrieben. Dann fahren Sie fort! :-)

PS.: Mit "weitermachen" meinte ich nicht "fallen lassen", sondern "mehr lernen, anders lernen". Wenn Sie C kennen, werden Sie es möglicherweise nie mehr löschen: Java verwendet JNI, um C-Routinen für Low-Level-Inhalte aufzurufen. Python, Lua usw. werden häufig mit C-Code erweitert (die Lua-Referenz setzt für einige Funktionen nur C-Kenntnisse voraus eine dünne Hülle für die C-Funktion dahinter) und so weiter.

PhiLho
quelle
3

Ja, das Erlernen der C-Sprache vor anderen fortgeschrittenen Sprachen hilft Ihnen dabei, schnell andere Sprachen zu lernen.

Zukunft codieren
quelle
2

Laut Wikipedia ist Objective-C eine strikte Supermenge von C. In diesem Fall würde ich vorschlagen, zuerst C zu lernen. Wenn Sie dann Objective-C lernen, wird klar, welche Teile als Teil von Objective-C hinzugefügt werden.

Trent
quelle
2

C gibt Ihnen sehr wenig Abstraktion von der Assemblierung. Bei einigen C-Compilern können Sie sogar Inline-Assemblierungen durchführen. Dies kann sehr nützlich sein, um darüber nachzudenken, wie der Computer funktioniert, was wichtig zu wissen ist.

Abgesehen davon, wenn Sie wirklich an Object-C interessiert sind, lassen Sie sich nicht davon abhalten, etwas in C zu schreiben, nur weil es "gut für Sie" ist. Sie müssen sich nicht frustrieren, während Sie versuchen, neue Fähigkeiten zu erlernen. Es ist wichtig, dass Sie Spaß an dem haben, was Sie tun.

Steve g
quelle
2

Möchten Sie ein Hardcore-Entwickler sein? Dann lerne zuerst c.

Die Bücher, die Sie benötigen, um c vollständig zu beherrschen, gehören zu den besten Schriften der Technologie. Folgendes benötigen Sie:

C Programmiersprache

Die Standard C-Bibliothek

Freddie
quelle
2

Ziel C unterscheidet sich ausreichend von C, um nicht zuerst C zu lernen.

Aus Sicht der Syntax / Sprachfamilie ist es fast besser, SmallTalk zu studieren (auf dem Ziel C basiert).

Konzentrieren Sie sich aus praktischer Sicht darauf, jeweils eine Sprache zu lernen.

Wenn Sie später eine andere Sprache lernen möchten, sind C ++, Java und Python 1) einfach zu erlernen, 2) beliebt und somit marktfähig, 3) leistungsstark.

Brooks
quelle
1
Nein, Objective-C ist eine sehr kleine Obermenge von C. Ohne C können Sie in Objective-C nichts tun. Sicher, das Objektmodell stammt aus Smalltalk, aber die Syntax ist größtenteils nicht einmal nah.
Sven
2

Sie sollten Grundkenntnisse in C haben, bevor Sie Objective_C starten, aber Sie müssen nicht jedes Detail von C beherrschen.

Ich habe meine Notizen veröffentlicht, nachdem ich "Programmieren in Objective-C" gelesen habe, falls es jemand anderem hilft.

Lernziel c mit Programmierung-

cfischer
quelle
1

Abhängig von vielen Sprachen, die Sie bereits kennen, ist es möglicherweise besser, mit dem Erlernen von Objective-C zu beginnen. Die Grundlagen in den meisten Sprachen sind grundsätzlich gleich, die Syntax ist unterschiedlich. Das Erlernen von C zuerst wird beim Erlernen von Objective-C keinen großen Unterschied machen.

Dave
quelle
Aber nur, wenn man mindestens eine andere Programmiersprache kennt.
Sven
Zusätzlich zu @
Svens
1

Ich habe Objective-C sofort gelernt und es hat seit ungefähr einem Jahr gut funktioniert. Ich hatte nur einige Schwierigkeiten, C-Code zu lesen, als ich das Projekt heruntergeladen habe, um zu sehen, wie sie funktionieren, aber jetzt habe ich wirklich das Bedürfnis, C zu lernen. Sie können versuchen zu lernen ObjC ohne C, aber früher oder später benötigen Sie C.

Alexandre Cassagne
quelle
1

IMHO sollte man zuerst mindestens etwas C lernen und vor allem über Zeiger. Das ist noch wichtiger, wenn man aus einer Sprache kommt, die keine Zeiger hat. Viele Leute fragen nach Code wie

NSString *string = [[NSString alloc] init];
string = @"something";

da sie nicht über die Unterscheidung zwischen einem Zeiger und dem Objekt Bescheid wissen, auf das er zeigt.

Natürlich muss man nicht alles von C lernen, bevor man mit Objective-C beginnen kann, aber einige grundlegende Dinge sind absolut notwendig.

Sven
quelle
Ich wünschte ich könnte +10 stimmen. Einmal in einem obj-c dev-Interview wurde ich gefragt, ob es möglich ist, einen Zeiger auf NSInteger zu erstellen ... Ich war schockiert, weil das für mich so wichtig war, aber nicht für jedermann. Das ist also wichtig und leicht zu vergessen, dass dies auch verstanden werden muss.
MANIAK_dobrii
0

Nein, gehe direkt zu Ziel C!

Ich bin von ActionScript 3 zu Objective C gewechselt und habe bereits einen Praktikanten in einem Unternehmen!

Tun Sie, was Sie wollen.

Nathan
quelle
Warum sollten Sie den objektorientierten Geisteszustand völlig verpassen und zuerst C lernen? Es ist, als würde man lernen, einen Drachen zu steigen und hoffen, Pilot zu werden. Sie müssen das OOP von Anfang an integrieren.
SwiftArchitect
0

Wenn Sie zuvor eine andere Sprache gelernt haben, werden Sie beim Schreiben der richtigen Syntax immer Verwirrung stiften. Ich kenne keinen Zweck, aber Objekt C verwendet eine seltsame (nicht übliche) Syntax zum Aufrufen von Objektmethoden. Es nennt es als Senden von Nachrichten, ja, es ist dementsprechend ein reines objektorientiertes Konzept, jedoch benennen die meisten objektorientierten Sprachen dies als aufrufende Methode und verwenden eine traditionellere Syntax von aufrufenden Methoden. Die Speicherbereinigung ist auch etwas sehr Seltsames. Objekt C basiert auf der Referenzanzahl der alten Schule. Sie werden also Schwierigkeiten haben, es zu akzeptieren, wenn Sie von einer anderen Sprache wechseln. Ich schreibe ein Buch Object C-Kurzmigrationshandbuch für C / C ++ - Programmierer in der Hoffnung, Menschen dabei zu helfen, alle Unterschiede schneller zu erkennen.

Dmitriy
quelle
Denn in Objective-C bedeutet "Senden einer Nachricht" nicht "Aufrufen einer Methode", sondern das gleichzeitige Senden einer Nachricht führt zum Aufrufen einer Methode (Funktion) =) Wenn Sie eine Nachricht an ein Objekt senden, durchläuft sie einen Nachrichtenversand Mechanismus (Sie können darüber hier lesen: developer.apple.com/library/ios/documentation/Cocoa/Conceptual/… oder hier: stackoverflow.com/questions/982116/… )
MANIAK_dobrii