it-swarm.com.de

Was ist der Unterschied zwischen [Class new] und [[Class alloc] init] in iOS?

Mögliches Duplikat:
alloc, init und new in Objective-C

Ich bin ein wenig verwirrt über [Class new] Und [[Class alloc] init]. Ich habe ein Objekt content mit [Class new] Und [[Class alloc] init] Definiert.

(1). NSMutableArray *content = [NSMutableArray new];
(2). NSMutableArray *content = [[NSMutableArray alloc] init];

Meine Frage betrifft die Unterschiede zwischen [Class new] Und [[Class alloc] init]. Für mich sind (1) und (2) ähnlich. Wenn (1) und (2) ähnlich sind, warum verwenden wir dann die meiste Zeit [[Class alloc] init] Im Vergleich zu [Class new]? Ich denke, dass es einen Unterschied geben muss.

Bitte erklären Sie die Unterschiede, Vor- und Nachteile beider?

68
Prasad G

Alloc: Klassenmethode von NSObject. Gibt eine neue Instanz der empfangenden Klasse zurück.

Init: Instanzmethode von NSObject. Wird von Unterklassen implementiert, um ein neues Objekt (den Empfänger) unmittelbar nach Zuweisung des Speichers zu initialisieren.

Ne: Klassenmethode von NSObject. Ordnet eine neue Instanz der empfangenden Klasse zu, sendet ihr eine Init-Nachricht und gibt das initialisierte Objekt zurück.

Release: Instanzmethode des NSObject-Delegaten. Verringert den Referenzzähler des Empfängers.

Autorelease: Instanzmethode des NSObject-Delegaten. Fügt den Empfänger dem aktuellen Autorelease-Pool hinzu.

Retain: Instanzmethode des NSObject-Delegaten. Erhöht den Referenzzähler des Empfängers.

Copy: Instanzmethode des NSObject-Delegaten. Gibt eine neue Instanz zurück, die eine Kopie des Empfängers ist.

Abschließend können wir das sagen

Allocation geht mit init

new = alloc + init

130
Shantanu

Das +new Methode ist einfach Abkürzung für +alloc und -init. Die Besitzersemantik ist identisch. Der einzige Vorteil bei der Verwendung von +new ist, dass es prägnanter ist. Wenn Sie Argumente für den Initialisierer der Klasse bereitstellen müssen, müssen Sie das +alloc und -initWith... Methoden statt.

29
dreamlax

Hier: alloc, init und new in Objective-C

Im Grunde ist es eine Frage der Moderne im Vergleich zur Tradition. Der direkteste Vorteil von init gegenüber new ist, dass es viele benutzerdefinierte init-Methoden gibt.

9
Cehhiro