Hi Gregory,
        thanks for your support, I was a bit upset because I'm pretty sure the 
same instance fails. Because when the crashes began to happen after adding the 
second document type, I put a breakpoint in awakeFromNib, and by giving a look 
at the document, I knew that this was a document already opened everything in 
it was "valid". But to be really certain of it I added a simple 
awakeFromNibAlreadyCalled instance variable, and it showed that this one 
instance had its awakeFromNib method called a second time.


PS: I put a breakpoint and dumped self with gdb.

The first time it is called:
(gdb) print (void *) self
$1 = (void *) 0x100675c30

The second time:
(gdb) print (void *) self
$2 = (void *) 0x100675c30

Regards.

On Feb 1, 2010, at 7:55 PM, Gregory Weston wrote:

> 
> On Feb 1, 2010, at 12:16 PM, Half Activist wrote:
> 
>> I'm not making any assumption on the number of documents that might exist at 
>> one time.
>> Even if i have 10 documents opened, the one that i do a "save as" on has its 
>> _instance method_ awakeFromNib called a second time:
>> The callstack shows that my document's awakeFromNib is being called during 
>> the save panel setup process.
> 
> Yes. The call stack shows that awakeFromNib is being sent to *an* instance of 
> your document class. The call stack also shows just before that that a nib is 
> being loaded and the objects therein instantiated. If that's not what's 
> implied by lines 1-3, someone at NeXT did a mind-bogglingly horrible job 
> coming up with method names.
> 
>> #1  0x00007fff82927959 in -[NSIBObjectData 
>> nibInstantiateWithOwner:topLevelObjects:] ()
>> #2  0x00007fff82925b49 in loadNib ()
>> #3  0x00007fff8292525c in +[NSBundle(NSNibLoading) 
>> _loadNibFile:nameTable:withZone:ownerBundle:] ()
>> #4  0x00007fff82c93797 in -[NSDocument 
>> _savePanelAccessoryViewForWritableTypes:defaultType:] ()
>> #5  0x00007fff82c91192 in -[NSDocument _preparedSavePanelForOperation:] ()
>> #6  0x00007fff82c9022b in -[NSDocument 
>> _runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:] ()
>> 
>> Unless specifying several editable document types grants your awakeFromNib 
>> an undocumented chance to get called a second time.
>> Furthermore, how do you explain that this works on Leopard but fails on Snow 
>> Leopard?
> 
> One possible explanation is that Snow Leopard is using a technique to 
> populate the formats menu that involves instantiating your document(s) while 
> Leopard used a different technique. Regardless of the "nothing new" marketing 
> line that was used for 10.6, behind the scenes we know quite a lot changed.

_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to