Kakao-Note. Was genau ist der Unterschied zwischen diesen NSMutableData Methoden?
-
05-07-2019 - |
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
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.