I would guess that this method was created by a code generator, starting from a data structure with all of those fields.<p>More generally, a long initializer (or class method that returns an autoreleased object) is a fairly common pattern in Objective-C because it provides a common piece of code that all other initializers can call.  There is usually some more obvious and convenient choice available, to avoid calling the horrible method directly.