Ich lese hier C vor Ziel-C lernen?
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).
Ist das wahr?
Ist es möglich, eine iPhone-App nur in der Programmiersprache C zu erstellen?
Antworten:
Verdammt, es hat eine Weile gedauert, aber ich habe es verstanden:
Haupt c:
AppDelegate.c:
View.c
Es ist hässlich, aber es funktioniert.
Wenn Sie dies herunterladen möchten,
können Sie es aus meiner DropboxherunterladenhierSie können es hier aus meinem GitHub-Repository herunterladen :
quelle
@"AppDelegate
ist eine Konstante NSString und wird nicht mit einem C-Compiler nur kompilieren. Verwenden SieCFSTR("AppDelegate")
stattdessen.Objective-C ist eine Obermenge der C-Sprache, daher ist es theoretisch möglich, ein Programm vollständig in C zu schreiben.
WennSie jedoch nicht gründlich mit C vertraut sindOpenGL ES
, müssen Sie mindestens einige Aufgaben ausführen (auch Richs Beispiel hat eine const NSString * drin), sonst müssen Sie die Ansichten selbst schreiben.OK, das oben ist völlig falsch. Lassen Sie mich sagen, ich bin erstaunt, dass Rich dieses hohe Ziel erreicht hat, also habe ich es auf den Mac portiert (Quelle hier ). Die folgenden Dateien haben keine Header, keinen Link zu Cocoa und keine Projektfeder:
AppDelegate.m
View.m
prefix.pch
quelle
Die zitierte Passage ist wahr, aber die Antwort auf Ihre Frage lautet nein.
Um zu veranschaulichen, worüber der Antwortende Mecki in dieser anderen Frage sprach:
Es ist nichts anderes als reiner C - Code innerhalb dieser Methode, aber die Methode selbst ist Objective-C - Code, wie die Klasse ist , die diese Methode enthält.
Es ist also möglich, das zu tun, was Mecki gesagt hat, aber Sie können nicht (praktisch - wie Richard J. Ross III gezeigt hat, ist es technisch möglich, aber ziemlich viel zu tippen) ein ganzes Cocoa Touch-Programm in reinem C schreiben.
quelle
Tatsächlich ruft ein Teil des hier veröffentlichten Codes, während er in C geschrieben ist, immer noch den Ziel-C-Code auf :). Ich weiß nicht, ob das tatsächlich zum Szenario des Originalplakats passt, als er fragte
Aber ich würde den Leuten zustimmen, die sagen, dass Sie im Allgemeinen und für eine App mit einer GUI Ihre GUI in OpenGL (C) schreiben müssen.
Ich denke, das ist es, was die meisten Spiele tun, oder? Obwohl ich nicht sicher bin, ob in C Zugriff auf die E / A des iPhones (z. B. den Touchscreen) besteht.
Last but not least rocken die Jungs, die den Code über Rock geschrieben haben! :) :)
quelle
objc_msgSend()
ist reine C. Die Tatsache, dass ich aufrufe,initWithFrame:
spielt keine Rolle, da Methodenimplementierungen auch C-Funktionen sind.