The book (and some online resources) pretty much describes designated initializers as a language feature, but this made me scratch my head, since I don’t see how the compiler would know which initializer is the designated one (calling [super init] or having a certain number of parameters may not be a unique differentiator).
So I came to the conclusion that designated initializers are a convention, not a language feature. This is an important distinction, IMHO. I was looking for preprocessing directives or… something. Now that I think about it, I’m not sure what the compiler would do with that information . But I think it would be helpful if the book spelled out that distinction - I’m not sure why, but my brains were very insistent on figuring that one out.