Leí aquí Aprender C antes de Objective-C?
Por lo general, luego reemplazo algún código Obj-C con código C puro (después de todo, puede mezclarlos tanto como desee, el contenido de un método Obj-C puede ser completamente, código C puro)
¿Es esto cierto?
¿Es posible construir una aplicación para iPhone únicamente en el lenguaje de programación C?
Respuestas:
Maldición, me tomó un tiempo pero lo entendí:
C Principal:
AppDelegate.c:
View.c
Es feo, pero funciona.
Si desea descargar esto,
puede obtenerlo desde mi Dropbox aquíPuede obtenerlo de mi repositorio de GitHub aquí :
fuente
@"AppDelegate
es una NSString constante y no se compilará con un compilador C-only. Usar en suCFSTR("AppDelegate")
lugar.Objective-C es un superconjunto del lenguaje C, por lo que es teóricamente posible escribir un programa completamente en C, sin embargo, a menos que esté completamente versado
OpenGL ES
, deberá hacer al menos algo de objC (incluso la muestra de Rich tiene un const NSString * en él), de lo contrario, tendrá que escribir las vistas usted mismo.OK, lo anterior está completamente mal. Permítanme decir que estoy asombrado de que Rich haya logrado este elevado objetivo, así que lo porté a la Mac (fuente aquí ). Los archivos a continuación no tienen encabezados, no se vinculan a Cocoa, ni el proyecto tiene una punta:
AppDelegate.m
View.m
prefijo.pch
fuente
El pasaje citado es verdadero, pero la respuesta a su pregunta es no.
Para ilustrar de qué estaba respondiendo Mecki en esa otra pregunta:
No hay nada más que código C puro dentro de este método, pero el método en sí mismo es código Objective-C, al igual que la clase que contiene este método.
Por lo tanto, es posible hacer lo que dijo Mecki, pero no puede (prácticamente, como lo demostró Richard J. Ross III, es técnicamente posible pero bastante tipeado) escribir un programa completo de Cocoa Touch en puro C.
fuente
En realidad, parte del código publicado aquí, aunque está escrito en C, todavía llama código de objetivo-C :). No sé si eso realmente se ajusta al escenario del póster original cuando preguntó
pero estaría de acuerdo con las personas que dicen que, en términos generales y para una aplicación con una GUI, necesitaría escribir su GUI en OpenGL (que es C).
Creo que eso es lo que hacen la mayoría de los juegos, ¿verdad? Aunque no estoy seguro de si hay acceso a las E / S del iPhone (la pantalla táctil, por ejemplo) en C.
Por último, pero no menos importante, ¡los chicos que escribieron el código sobre rock! :)
fuente
objc_msgSend()
es puro C. El hecho de que llameinitWithFrame:
no importa, ya que las implementaciones de métodos también son funciones de C.