2010-10-22 5 views
1

Y at-il un moyen d'écrire des fichiers sur le système de fichiers de l'iPhone en utilisant seulement du code c pur et une certaine posix comme api?iPhone IO dans le style pur c/posix

Je n'ai trouvé que des choses Objective-C/Cocoa et je ne peux pas simplement mélanger un fragment de code Objective-C dans le fichier .c.

Répondre

1

Objective-C est une couche construite au-dessus du langage C; donc potentiellement tout ce qui est écrit en C ou tout ce qui est dans la bibliothèque Standard C peut être appelé dans votre code Objective-C.

pour le fichier IO, vous pouvez utiliser le fichier C standard IO:

NSString *filePath = @"YOUR FILE PATH"; 
FILE *file; 
file = fopen([filePath cStringUsingEncoding:NSUTF8StringEncoding], "w"); 

fprintf(file, "YOUR OUTPUT HERE\n"); 

fclose(file); 
+0

Il devrait évidemment être possible d'utiliser le code c dans l'objectif-c. Mais nous voulons le faire dans l'autre sens. – user299831

+0

Vous voulez appeler le code Objective-C de C? – Jeff

+0

Voir ma réponse sur comment appeler Objective C à partir de C. Il requiert un fichier Objective C .m séparé et une fonction auxiliaire C ANSI dans ce fichier. – hotpaw2

3

Objective C est un surensemble pur de plaine ANSI C. Vous pouvez simplement laisser tomber tout code C pur dans tout Objective C fichier .m . (Le contraire ne fonctionnera pas parce que le compilateur ne saura pas compiler un fichier .c en utilisant le surensemble de langage.)

Ajouté: La manière de faire l'inverse n'est pas d'essayer et de mettre directement l'Objective C dans un fichier C, mais pour mettre l'Objective C dans un nouveau fichier Objective C .m avec une fonction C wrapper pour appeler également cette méthode Objective C dans ce fichier .m. Utilisez ensuite un appel de fonction C dans le fichier C pour appeler à partir de ce fichier C vers la fonction d'encapsuleur C du fichier Objective C et faites appel à la fonction Objective C dans la fonction C wrapper du fichier Objective C. La plupart des appels C posix fonctionnent normalement sur l'iPhone, bien que certains soient illégaux s'ils tentent d'atteindre l'extérieur du sandbox de sécurité (par exemple, vous devrez utiliser un peu d'Objective C pour déterminer le chemin légal du posix fopen() appel peut utiliser.)

J'ai pris de grandes applications C et les ai enveloppées dans juste assez d'Objective C pour les connecter avec le cadre Cocoa Touch UI. Quelques pages valent la peine.

+1

Donc, fondamentalement, à l'application ac port iphone, vous devez écrire un wrapper ... – user299831

+1

@ user299831: Oui, étant donné qu'il n'y a pas de stdin, la console stdout (lorsque vous ne déboguez pas), vous devez vous connecter à l'interface graphique de l'utilisateur via une interface utilisateur. Ou avoir une application vide qui semble ne rien faire. – hotpaw2