Quelle est la meilleure façon de mettre en œuvre un ByteBuffer de Java comme dans Obj-C?
-
21-08-2019 - |
Question
Je suis en train de construire une application pour l'iPhone, bien que je suis complètement nouveau pour Obj-C. Pour un problème que je voudrais utiliser un ByteBuffer en Java, mais je ne vois pas de classe appropriée dans la documentation d'Apple. Je dois donc probablement mettre en œuvre seul.
Ma question est, comment faire le mieux:
- Y at-il une classe similaire dans Obj-C? (Ce serait la meilleure solution;))
- Dois-je le faire en utilisant des classes Obj-C comme NSData?
- Ou devrais-je rester avec le code C clair?
La solution
Vous voulez probablement NSMutableData.
Autres conseils
Si je me souviens java.nio.ByteBuffer
(de travailler avec Java beaucoup il y a des lunes) est que met en oeuvre séquentielle ByteBuffer
lecture / écriture à un tableau d'octets. Ceci est analogue à un NSInputStream
soutenu par un NSData
(pour l'entrée):
NSInputStream *inputStream = [NSInputStream inputStreamwithData:myData]; //assuming myData is NSData*
float myFloat;
if([inputStream hasBytesAvailable]) { // NO if you've already read to the end of myData
NSInteger bytesRead = [inputStream read:&myFloat maxLength:sizeof(myFloat)];
NSAssert(bytesRead == sizeof(myFloat);
}
Vous pouvez faire quelque chose de similaire avec une écriture à une NSOutputStream
<=>.
J'ai une question similaire. ilya a mon ici avec sa réponse .
Mon objectif est de mettre en œuvre une version Obj-C entièrement fonctionnelle java.nio.ByteBuffer. Je voulais juste savoir ce que je devrais utiliser pour obtenir il
Ce sera votre classe personnalisée.
Pour mon cas, je pense et NSInputStream
devrait être utilisé NSOutputStream
. Bien sûr pas que la façon dont est NSMutableData
la acceptée et la plupart du temps jusqu'à voté réponse.