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

Reply via email to