One other thing that might not be obvious to a Swift-only programmer is that convenience initializers call a designated initializer on the dynamic type, not the same class. This is a design Swift got from Objective-C, and it's what allows them to be inherited. (Other languages with self.init(…)
-like features, like C++, don't have this dynamic behavior and therefore don't have a separate notion of "convenience initializers".)
6 Likes