Memory leaking? Bitte um Hinweise

hmm, wird new nicht auch irgendwo in der apple doku als kurzform für alloc init genannt?
 
hmm, wird new nicht auch irgendwo in der apple doku als kurzform für alloc init genannt?

Ja, das ist die Basisimplementierung, müsste also bei +new (NSObject) stehen. Deshalb ist es ja meist schlicht unbedeutend. In manchen Fällen ist es aber auch "leichter" für das Framework, siehe oben.

Zähl mal die +new…-Implementierungen. Da kommst du vielleicht auf ein Dutzend. -init…-Implementierungen dürfte es hunderte geben.
 
Es ist aber nicht unerheblich dafür, ob man +new… nutzt.
Das war auch gar nicht meine Frage…
Außerdem gibt es kaum Fälle für +new…
Das kann man aber bei der Verwendung einer beliebigen Klasse nicht wissen. Worauf ich hinauswollte ist, dass man alloc init* nur innerhalb der Implementierung der Klasse benutzen sollte und ich deshalb meine Verwunderung über die Lehre von alloc init statt new zum Ausdruck brachte.
 
Das war auch gar nicht meine Frage… Das kann man aber bei der Verwendung einer beliebigen Klasse nicht wissen. Worauf ich hinauswollte ist, dass man alloc init* nur innerhalb der Implementierung der Klasse benutzen sollte und ich deshalb meine Verwunderung über die Lehre von alloc init statt new zum Ausdruck brachte.
Leider nicht immer, aber üblicherweise werden auch überschriebene Methoden dokumentiert. Im Übrigen ist nach meinen obigen Ausführungen +new gegenüber +alloc-init nicht besser. Es kann allenfalls nur +new… besser als +alloc-init… sein. Das ist dann aber dokumentiert. Insofern kann man das wissen.

Alle Methoden kann man nur innerhalb der Implementierung verwenden? Im Header steht kein Code!?

Aber in der Implementierung hat man gerne einen +CA. Dann erübrigt sich ein +new.
 
ich bin gerade noch mal auf eine Quelle zum Thema "autorelease ist böse" gestoßen(speziell fürs iPhone) - ohne Wertung:

I started getting a better performance from my iPhone apps when I stopped using some methods creating autoreleased objects
[...]
In version 2.0 of the iPhone OS there was also the problem that some “convenience methods” did not work at all; I’m sure you’ve experienced your application crashing when using NSDictionary’s dictionaryWithObjects:forKeys: and then finding out that a replacing that with initWithObjects:forKeys: made your application run just fine.
 
Ich hatte den Artikel damals auch gelesen und die Aussage ist anders gemeint, als von Dir interpretiert ;-)

Viele Grüße
 
Der Artikel ist an einigen Stellen sehr missverständlich. Autorelease erzeugt keine "de facto Leaks", da hat jemand Autorelease nicht verstanden.

Und Autorelease lässt sich auch nicht vermeiden, das glaubt der Autor nur ...

Kurzum: Es ist nicht "böse", muss aber den Regeln entsprechend angewandt werden.

Alex
 
Zurück
Oben Unten