Thread with 14 posts
jump to expanded post“why don't languages like c++ and java have multiple constructors? they're so useful! i love that rust has multiple constructors!”
the finger curls on the monkey's paw
and i find out about the hell of objective-c designated initialisers
@hikari Swift at least adds a static type system for initializers to make all of the best practices around them work consistently and soundly.
@porglezomp @saagar @hikari We have lost the magic of Good Interface Builder with Live View Objects in the style of the Steve Jobs Calculator Constructor (implemented with some truly wild object substitution shenanigans) but are still forced to carry “every AppKit and UIKit type claims to be NSCoding”.
@jrose @porglezomp @saagar @hikari having written that deprecation message, with 15 years of love in my heart, let me say: good riddance
@jrose @porglezomp @saagar @hikari but yeah, those conformances are forever
@saagar @jrose @porglezomp @hikari yup, correct. It means that you are inheriting your designated initializer situation from your superclass, that is, you support using your superclass’s initializers to produce a fully functional object of _your_ subclass, and so the init(coder:) of your superclass is good enough for your subclass too.
The moment you add a designated init, the init(coder:) of your superclass isn’t sufficient anymore and you have to do both (if only to fatalErrror out).
@saagar @millenomi @porglezomp @jrose btw interface builder can call init
on your class if you prefer that to initWithCoder:
, but I assume it can't connect outlets and stuff if you do (or can it 🤔)
@saagar @millenomi @porglezomp @jrose or, of course, set up a frame for a view, so this has questionable utility for actual views
@saagar @millenomi @porglezomp @jrose [UIButton buttonWithType:UIButtonTypeInfoLight]
my beloved