J'ai lu ici Apprendre C avant Objective-C?
Habituellement, je remplace ensuite du code Obj-C par du code C pur (après tout, vous pouvez les mélanger autant que vous le souhaitez, le contenu d'une méthode Obj-C peut être entièrement du code C pur)
Est-ce vrai?
Est-il possible de construire une application iPhone uniquement dans le langage de programmation C?
Réponses:
Merde, ça m'a pris du temps mais je l'ai compris:
principal c:
AppDelegate.c:
View.c
C'est moche, mais ça marche.
Si vous souhaitez télécharger ceci,
vous pouvez l'obtenir depuis ma boîte de dépôt iciVous pouvez l'obtenir à partir de mon référentiel GitHub ici :
la source
@"AppDelegate
une chaîne NSString constante et ne compilera pas avec un compilateur C uniquement. UtilisezCFSTR("AppDelegate")
plutôt.Objective-C est un sur-ensemble du langage C, il est donc théoriquement possible d'écrire un programme entièrement en C, cependant, à moins que vous ne soyez parfaitement familiarisé avec
OpenGL ES
, vous devrez faire au moins un certain objC (même l'échantillon de Rich a un const NSString *), sinon vous devrez écrire les vues vous-même.OK, ce qui précède est complètement faux. Permettez-moi de dire que je suis stupéfait que Rich ait atteint ce noble objectif, alors je l'ai porté sur le mac (source ici ). Les fichiers ci-dessous n'ont pas d'en-tête, ne sont pas liés à Cocoa et le projet n'a pas de plume:
AppDelegate.m
View.m
prefix.pch
la source
Le passage cité est vrai, mais la réponse à votre question est non.
Pour illustrer le propos du répondeur Mecki sur cette autre question:
Il n'y a rien d'autre que du code C pur dans cette méthode, mais la méthode elle-même est du code Objective-C, tout comme la classe qui contient cette méthode.
Il est donc possible de faire ce que Mecki a dit, mais vous ne pouvez pas (pratiquement - comme Richard J. Ross III l'a montré, c'est techniquement possible mais beaucoup de dactylographie) écrire un programme Cocoa Touch entier en C. pur
la source
En fait, une partie du code affiché ici, alors qu'il est écrit en C, appelle toujours du code objectif-C :). Je ne sais pas si cela correspond vraiment au scénario de l'affiche originale quand il a demandé
mais je serais d'accord avec les gens qui disent que, d'une manière générale et pour une application avec une interface graphique, vous devez écrire votre interface graphique en OpenGL (qui est C).
Je pense que c'est ce que font la plupart des jeux, non? Bien que je ne sais pas s'il y a accès aux E / S de l'iPhone (l'écran tactile par exemple) en C.
Last but not least, les gars qui ont écrit le code ci-dessus rock! :)
la source
objc_msgSend()
est pur C. Le fait que i appelleinitWithFrame:
n'a pas d'importance, car les implémentations de méthodes sont également des fonctions C.