I implemented the old init-as-a-factory pattern, but in one particular case (but not others!) I get a warning from the analyser regarding memory leaks. And indeed, looking at the [Cocoa Memory Management Policy](https://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html) rules, it is `alloc`, not `init`, which can return +1-retain-count objects.

So it appears that:

1. Releasing `self` and returning a new object from `init` is, strictly speaking, against the rules.
2. Many places on the internet promote this technique, and because of the tandem nature of alloc/init this does work.
3. The analyser sometimes complains about this, and sometimes doesn't.

So... have we been doing this wrong all along?