On May 12, 2012, at 5:55 PM, Kyle Sluder wrote:

> You are correct that nothing in the docs prohibits passing the document as 
> the file's owner argument for window controllers you construct yourself. And 
> in the case of a single window controller, it might work—though this is not 
> guaranteed.

Huh. In NSDocument.h, it is written "The default implementation of 
(makeWindowControllers) ... creates a new window controller ..., specifying 
this document as the nib file's owner..."

Presumably, Apple is telling us this so we know how to do it ourselves. If this 
is a pattern we ought not emulate, this would be an ideal place to mention that.

> But if you have two or more window controllers, and you need to set the 
> window for each of them, then clearly the document's window property is not 
> the appropriate place for this.

It's not at all clear. 


> And it will result in multiple -awakeFomNib: messages being sent to your 
> NSDocument.

Heh, assuming awakeFromNib will only ever be called once is a newbie mistake 
I've made more than once ;)

I presume you meant windowControllerDidLoadNib: not awakeFromNib. I would 
*expect* multiple windowControllerDidLoadNib: calls, once for each nib loaded. 
That's perhaps why windowControllerDidLoadNib: has a windowController arg; so 
you can know which nib is being loaded and act appropriately. 

> The document-loads-nib pattern is explicitly documented as a convenience 
> wrapper around creating your own NSWindowController instance.

Yes, it is convenient.

> The window outlet on NSDocument exists solely for the purpose of supporting 
> this convenience.

I don't think so. I think it's there to support the convenience of having the 
nib's file's owner be the document, just like it is in the single window case.

If it were important that nibs should be built differently for single and 
multiple window cases, I'd think the docs would mention it someplace, but they 
don't.

_murat


_______________________________________________

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