Dites que j'ai un fichier binaire (généré avec Java) contenant une valeur int de 32 bits. J'utilise actuellement le code suivant Objective-C pour l'analyser:Quel est le moyen le plus simple d'analyser les fichiers binaires dans Cocoa Touch?
NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"dat"];
NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path];
unsigned long intValue;
memcpy(&intValue, [[file readDataOfLength:4] bytes], 4);
intValue = NSSwapBigLongToHost(intValue);
[file closeFile];
Ma première question est de se demander si c'est la façon courante de faire les choses sur l'iPhone parce que je ne trouve rien près de la DataInputStream Java .
Ma deuxième question concerne la ligne de code avec un memcpy. Je n'undestand pourquoi la partie suivante (plus élégante, moins « bas niveau ») ne fonctionne pas à la place:
[[file readDataOfLength:4] getbytes:&intValue];
Je reçois un avertissement Surchauffe:
'NSData' may not respond to '-getbytes:'
Lors de l'exécution , J'obtiens:
'NSInvalidArgumentException', reason: '*** -[NSConcreteData getbytes:]: unrecognized selector sent to instance