Eu li aqui Aprenda C Antes do Objective-C?
Normalmente, substituo algum código Obj-C por código C puro (afinal, você pode misturá-los o quanto quiser, o conteúdo de um método Obj-C pode ser inteiramente, código C puro)
Isso é verdade?
É possível criar um aplicativo para iPhone puramente na linguagem de programação C?
Respostas:
Porra, demorei um pouco, mas entendi:
main.c:
AppDelegate.c:
View.c
É feio, mas funciona.
Se você deseja fazer o download,
pode obtê-lo na minha caixa de depósito aquiVocê pode obtê-lo no meu repositório GitHub aqui :
fonte
@"AppDelegate
é um NSString constante e não será compilado com um compilador somente C. Use emCFSTR("AppDelegate")
vez disso.O Objective-C é um superconjunto da linguagem C, portanto, teoricamente, é possível escrever um programa inteiramente em C; no entanto, a menos que você seja totalmente versado
OpenGL ES
, precisará fazer pelo menos alguns objC (até a amostra de Rich possui um const NSString * nele); caso contrário, você terá que escrever as visualizações.OK, o exposto acima está completamente errado. Deixe-me dizer, estou surpreso que Rich tenha alcançado esse objetivo elevado, por isso o transportei para o mac (fonte aqui ). Os arquivos abaixo não têm cabeçalhos, não possuem link para o cacau nem o projeto possui uma ponta:
AppDelegate.m
View.m
prefix.pch
fonte
A passagem citada é verdadeira, mas a resposta para sua pergunta é não.
Para ilustrar sobre o que o respondente Mecki estava falando sobre outra pergunta:
Não há nada mas o código C puro dentro deste método, mas o método em si é código Objective-C, como é a classe que contém esse método.
Portanto, é possível fazer o que Mecki disse, mas você não pode (praticamente - como Richard J. Ross III mostrou, é tecnicamente possível, mas muita digitação) escrever um programa inteiro do Cocoa Touch em C. puro.
fonte
Na verdade, parte do código postado aqui, enquanto está escrito em C, ainda está chamando o código de objetivo C :). Não sei se isso realmente se encaixa no cenário do pôster original quando ele perguntou
mas eu concordaria com as pessoas dizendo que, de um modo geral e para um aplicativo com uma GUI, você precisaria escrever sua GUI no OpenGL (que é C).
Eu acho que é isso que a maioria dos jogos faz, certo? Embora eu não tenha certeza se há acesso às E / S do iPhone (a tela sensível ao toque, por exemplo) em C.
Por último, mas não menos importante, os caras que escreveram o código acima do rock! :)
fonte
objc_msgSend()
é puro C. O fato de eu chamarinitWithFrame:
não importa, pois as implementações de métodos também são funções C.