Frage

Eine Sache, ich bin ein wenig unklar, auf die Differenz zwischen diesen NSMutableArray Methoden ist:

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];

und

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];

Unter der Haube, was ist eactly die Klassenmethode hier? Wie unterscheidet es sich von der Instanzmethode unterscheiden?

Cheers, Doug

War es hilfreich?

Lösung

Die Klasse-Methode erstellt und autoreleases ein NSMutableArray-Objekt.

Die Instanzmethode initialzes ein Objekt, das Sie sich selbst zuordnen müssen. Der Code, den Sie geschrieben haben, wird nicht wirklich etwas tun, weil myMutableArrayInstance ist nil. Die Klassenmethode entspricht in etwa so aus:

NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];

Und wie Peter Hosey in den Kommentaren bemerkt, bedeutet es wirklich so aus:

NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
                                           initWithCapacity:WholeLottaData]
                                           autorelease];

, die unterschiedliche Ergebnisse aus dem oben haben, wenn die initWithCapacity: Methode ein anderes Objekt zurückgibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top