2010-10-14 15 views
4

Je viens de réaliser que j'ai perdu 30 minutes à la recherche dans Xcode NSData référence de classe comment faire en objc (désolé, j'expliquer cela en C comme cela dans la seule langue qui vient sans trop réfléchir):Comment initialiser un NSData afin de stocker MAX_SIZE_BUFFER octets?

#define MAX_SIZE_BUFFER 500 
byte *ptr; 
ptr = malloc(MAX_SIZE_BUFFER * sizeof(byte)); 
memset(ptr, 0, MAX_SIZE_BUFFER); 

J'ai commencé à coder comme ça, mais jamais trouvé comment init MAX_SIZE_BUFFER et mettre tous les octets à 0 de manière intelligente:

#define MAX_SIZE_BUFFER 500 
NSData *ptr 
ptr = [[[NSData] alloc] init]; // impossible to specify MAX_SIZE_BUFFER in the allocation. 

Ainsi je me suis dit, nous allons utiliser une méthode de classe comme:

+ data 
+ dataWithBytes:length: 
+ dataWithBytesNoCopy:length: 
+ dataWithBytesNoCopy:length:freeWhenDone: 
+ dataWithContentsOfFile: 
+ dataWithContentsOfFile:options:error: 
+ dataWithContentsOfMappedFile: 
+ dataWithContentsOfURL: 
+ dataWithContentsOfURL:options:error: 
+ dataWithData: 

mais aucun d'entre eux ne permet de faire le alloc et init init symply.

Par exemple: + dataWithBytes: length: nécessite la création d'un tampon C alternatif et un paramètre de la méthode. Dois-je me considérer comme un idiot ou comme un mauvais programmeur d'objc?

Sérieusement, avez-vous une méthode intelligente et simple?

Apple92

Répondre