3 Stimmen

mutableCopyWithZone, Kopie NSMutableArray?

Ich versuche, eine mutableCopy eines Planeten-Objekts, das 5 Instanzvariablen enthält (einer von ihnen ist ein NSMutableArray von String-Literalen zu machen. Mein Problem ist, dass ich unsicher bin, wie ich die newPlanet>data auf eine Kopie von self>data setzen kann, macht das Sinn?

-(id) mutableCopyWithZone: (NSZone *) zone {
    Planet *newPlanet = [[Planet allocWithZone:zone] init];
    NSLog(@"_mutableCopy: %@", [newPlanet self]);
    [newPlanet setName:name];
    [newPlanet setType:type];
    [newPlanet setMass:mass];
    [newPlanet setIndex:index];

    // NSMutableArray *data; HOW TO: newPlanet>data = self>data? 

    return(newPlanet);
}

EDIT_001:

Aufgrund der Kommentare von Chuck & bbum habe ich meine Methode aktualisiert und Folgendes hinzugefügt ...

@property(retain) NSMutableArray *data;
@synthesize data;

.

-(id) mutableCopyWithZone: (NSZone *) zone {
    Planet *newPlanet = [[Planet allocWithZone:zone] init];
    NSLog(@"_mutableCopy: %@", [newPlanet self]);
    [newPlanet setName:name];
    [newPlanet setType:type];
    [newPlanet setMass:mass];
    [newPlanet setIndex:index];

    NSMutableArray *copiedArray = [[self data] mutableCopyWithZone:zone];
    [newPlanet setData: copiedArray];
    [copiedArray release];

    return(newPlanet);
}

sehr geschätzt

gary

6voto

Chuck Punkte 228137

Hier gibt es nichts Besonderes. Etwas wie das hier:

NSMutableArray *copiedData = [[self data] mutableCopyWithZone:zone];
newPlanet.data = copiedData;
[copiedData release];

2voto

Ciarán Walsh Punkte 1856

Sie wollen wahrscheinlich

newPlanet->data = [data mutableCopyWithZone:zone];

Beachten Sie, dass Sie bei Verwendung eines Setters (wie dot-access oder setData: ), dann lösen Sie einen weiteren Rückbehalt aus, den Sie entsprechend behandeln sollten.

0voto

Asher Dunn Punkte 2344

Haben Sie etwas versucht wie [newPlanet setData:[[self data] mutableCopyWithZone:zone]]; ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X