C'est une excellente question. Je pense que @Diederik a une bonne réponse, bien qu'il soit regrettable que Cocoa ne dispose pas d'un mécanisme pour faire exactement ce que vous voulez faire.
NSInputStream
vous permet de lire des morceaux de N octets (très similaire à java.io.BufferedReader
), mais vous devez le convertir en un fichier de type NSString
par vous-même, puis recherchez les nouvelles lignes (ou tout autre délimiteur) et enregistrez les caractères restants pour la prochaine lecture, ou lisez plus de caractères si une nouvelle ligne n'a pas encore été lue. ( NSFileHandle
vous permet de lire un NSData
que vous pouvez ensuite convertir en un NSString
mais il s'agit essentiellement du même processus).
Apple a un Guide de programmation en continu qui peuvent aider à remplir les détails, et cette question SO peut aussi aider si vous avez à faire avec uint8_t*
tampons.
Si vous êtes amené à lire fréquemment des chaînes de caractères de ce type (en particulier dans différentes parties de votre programme), il serait bon d'encapsuler ce comportement dans une classe qui peut gérer les détails pour vous, ou même de sous-classer la classe NSInputStream
(c'est conçus pour être sous-classés ) et en ajoutant des méthodes qui vous permettent de lire exactement ce que vous voulez.
Pour information, je pense que ce serait une fonctionnalité intéressante à ajouter, et je vais déposer une demande d'amélioration pour quelque chose qui rende cela possible :-)
Edit : Il s'avère que cette demande existe depuis quelques années. Il existe un Radar datant de 2006 à ce sujet (rdar://4742914 pour les personnes internes à Apple).