In most cases,
+new is functionally equivalent to
+alloc /
-init, though there has been some debate about whether it should be used (primarily regarding cases where the
+allocWithZone: method has been overridden).
The
-autotrelease method exists to ease the burden of memory management, allowing the receiver to create and return transient objects that will eventually be disposed of (usually at the end of the run loop, sometimes sooner) but can be used by the sender (caller) for the time being.
If you are creating objects for use within a method, it is probably better to get in the habit of using an explicit
-release rather than
-autorelease because then the objects will go away immediately, freeing up memory right away.
When writing methods that return an object, it is best to adhere to Apple's method naming convention: assume that any method with "new" or "copy" in its name will return a persistent object that must be explicitly released, whereas other methods should return objects that do not need to be released (or should not be released because the receiving objects wants to keep ownership).
Read
Apple's memory management guide here