New NSData mit einer Reichweite von alten NSData Aufrechterhaltung bytes

Ich habe eine ziemlich große NSData (oder NSMutableData wenn nötig) - Objekt, die ich will nehmen Sie ein kleines Stück aus und überlassen Sie den rest. Da bin ich auf das arbeiten mit großen Mengen von NSData bytes, ich will nicht, um einen großen zu kopieren, sondern einfach nur abschneiden des vorhandenen bytes. Grundsätzlich:

  • NSData *Quelle: < ein paar bytes, die ich will
    verwerfen > + < big chunk bytes I
    wollen, halten >
  • NSData *Ziel: < big
    Stück von bytes, die ich behalten will >

Gibt es abschneiden Methoden in NSMutableData, aber Sie nur abgestutzten Ende, während ich die abgeschnitten werden soll, den Anfang. Meine Gedanken sind dazu mit den Methoden:

Beachten Sie, dass ich das falsche (kopieren) - Methode in der original-posting. Ich habe bearbeitet und repariert es

- (const void *)bytes

und

- initWithBytesNoCopy:length:freeWhenDone:

Jedoch, ich versuche, herauszufinden, wie um Speicher zu verwalten. Ich vermute, der Prozess wird sein, wie diese (die ich aufgegeben habe ????s, wo ich nicht weiß, was zu tun ist):

//Get bytes
const unsigned char *bytes = (const unsigned char *)[source bytes];

//Offset the start
bytes += myStart;

//Somehow (m)alloc the memory which will be freed up in the following step
?????

//Release the source, now that I've allocated the bytes
[source release];

//Create a new data, recycling the bytes so they don't have to be copied
NSData destination = [[NSData alloc]
                      initWithBytesNoCopy:bytes
                      length:myLength
                      freeWhenDone:YES];

Danke für die Hilfe!

Ich nehme an, dies ist mehr ein malloc Frage?

InformationsquelleAutor umop | 2010-04-07

Schreibe einen Kommentar