Re: Document being reopened on launch during modal dialog
Re: Document being reopened on launch during modal dialog
- Subject: Re: Document being reopened on launch during modal dialog
- From: Quincey Morris <email@hidden>
- Date: Tue, 06 May 2014 11:44:42 -0700
On May 6, 2014, at 11:23 , Mills, Steve <email@hidden> wrote:
> I'm looking at a crash log for our app that shows our app is initting. During init ([NSApplication finishLaunching]) we discover a problem and put up a modal dialog using [NSApplication runModalForWindow:]. During this modal run loop, something has decided that it would be a great time to handle the reopen event, so [NSDocumentController reopenDocumentForURL:withContentsOfURL:display:completionHandler:] is called and we open a document while the modal dialog is up, and before we've totally finished handling [NSApplication finishLaunching].
It sounds like you’re Doing It Wrong™. Well, sorta j/k, but seriously you’re overriding ‘finishLaunching’?
From the NSApplicationDelegate protocol documentation:
> "applicationDidFinishLaunching:
>
> "Delegates can implement this method to perform further initialization. This method is called after the application’s main run loop has been started but before it has processed any events. If the application was launched by the user opening a file, the delegate’s application:openFile: method is called before this method. If you want to perform initialization before any files are opened, implement the applicationWillFinishLaunching: method in your delegate, which is called before application:openFile:.)”
So documents may be opened between the issuing of the two notifications (wiil/didFinishLaunching). Both of those notifications, I would assume, are posted in ‘finishLaunching’, so your concept of “totally finished handling [NSApplication finishLaunching]” sounds flawed. In particular, putting up a modal dialog before invoking [super finishLaunching] — if that’s what you do — sounds like a bad idea.
Why aren’t you doing the initialization in the delegate methods?
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden