On 23 Jun 2014, at 14:38, Sean McBride <s...@rogue-research.com> wrote: > Hi all, > > The Obj-C designated initializer rules say that if a subclass creates a new > designated initializer that its implementation must call (one of) the > superclass' designated initializer. > > The docs for NSWindowController say initWithWindow: is the (only) designated > initializer. > > Countless examples of NSWindowController subclassing, like Apple's Sketch > sample code: > > <https://developer.apple.com/library/mac/samplecode/Sketch/Listings/SKTWindowController_m.html> > > do this: > > - (id)init { > // Do the regular Cocoa thing, specifying a particular nib. > self = [super initWithWindowNibName:@"DrawWindow"]; > } > > So there seems to be a contradiction here... Are the docs just omitting that > initWithWindowNibName: is in fact a secondary designated initializer?
If Sketch were strictly following these rules, -init would contain [self initWith…] instead of super because -init is a convenience initialiser of SKTWindowController. Since often times direct NSWindowController subclasses are final in practice (no further subclasses) and window controller initialisation happens after the nib file has been loaded, notably in -windowDidLoad, it’s common for initialisers to be almost empty, so skipping self and sending -initWithWindowNibName: to super doesn’t hurt. _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com