Re: NSFontPanel swamping the responder chain (and crashing)
Re: NSFontPanel swamping the responder chain (and crashing)
- Subject: Re: NSFontPanel swamping the responder chain (and crashing)
- From: Graham Cox <email@hidden>
- Date: Thu, 21 May 2015 20:09:39 +1000
> On 21 May 2015, at 7:31 pm, Quincey Morris <email@hidden> wrote:
>
> However, there is actually one more possibility: window.delegate. If that’s set to the document rather than the window controller, I suppose that might account for the crash. But I can’t imagine it would be.
Well, I was going to say that in fact my window’s delegate is the document, but that I set it to nil early on during the closure sequence, so that couldn’t be it.
However, you got me thinking (finally!). So I set a breakpoint on -[NSWindow setDelegate:]. It’s called quite a lot, but one place it was called unexpectedly was in -[NSDocument prepareSavePanel:] - I set the save panel’s delegate to the document. I can’t remember why I did this - it’s ancient code, and looking at it now it doesn’t appear to be implementing any delegate methods of NSSavePanel. So I tried commenting it out - BINGO, crash gone.
So the crash was indeed caused by the Save panel having a stale ref to the document. (I’m supposing that even though PowerBox is a separate process, presumably the local save panel sheet is an interface and proxy for it, so it exists within the local process). And just to verify this finding, if I add a -prepareSavePanel: method to my simple test app, I can reproduce the identical crash there. I’m thinking that could be worth a radar, because it’s pretty easy to forget to remove that reference from the save panel (especially as in the modern block-based world, what the save panel calls is mostly internal to NSDocument and there isn’t a very obvious place to undo the -prepareSavePanel: work).
So it looks as if the mystery is solved, subject to mopping up and checking that there’s no needed functionality that requires the save panel’s delegate to be my doc.
Realising how simple this is, I’m wondering why it’s taken me so long to track this down. Basic dumbness, probably. Anyway, thanks for all your help, above and beyond for sure.
—Graham
_______________________________________________
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