• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Best data source for table view in document window
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Best data source for table view in document window


  • Subject: Re: Best data source for table view in document window
  • From: Martin Hewitson <email@hidden>
  • Date: Thu, 06 Sep 2012 06:13:49 +0200

Thanks for the advice, gentlemen.

I already had a -cleanUp method being called from -windowWillClose: within the NSDocument (NSPersistentDocument, actually), so I looked more carefully at how that particular view controller is torn down. I made some changes such that now, in the document's cleanUp, I call -tearDown on the view controller. It in turn calls -tearDown on its builder object (which uses a timer to repeatedly refresh the model objects). Currently I can't get the view controller and builder to dealloc before the document, which results in crashes:

2012-09-06 05:41:19.889 TeXnicle[2122:303] Dealloc <TeXProjectDocument: 0x105058f20>
2012-09-06 05:41:19.902 TeXnicle[2122:303] Dealloc <TPOutlineBuilder: 0x105871610>
2012-09-06 05:41:19.902 TeXnicle[2122:303] Dealloc <TPProjectOutlineViewController: 0x10585a1d0>

Seems I'm doing something wrong. So, to recap, in the NSDocument I do:

- (void)windowWillClose:(NSNotification *)notification
{
  [self cleanUp];
}

- (void) cleanUp
{
  NSLog(@"Clean up...");
  // outline view controller
  [self.outlineViewController tearDown];
  self.outlineViewController = nil;

  // and lots of other stuff
}

then in the view controller I do:

- (void) tearDown
{
  NSLog(@"Outline view controller tearDown");
  [self.view removeFromSuperview];
  self.delegate = nil;
  self.outlineView.delegate = nil;
  self.outlineView.dataSource = nil;
  [self.outlineBuilder tearDown];
  self.outlineBuilder = nil;
}

and in the builder I do

- (void) tearDown
{
  [self stopObserving];
  [[NSNotificationCenter defaultCenter] removeObserver:self];
  [self stopTimer];
  self.delegate = nil;
  dispatch_release(queue);
}

- (void) stopTimer
{
  if (self.timer) {
    [self.sections removeAllObjects];
    [self.timer invalidate];
    self.timer = nil;
  }
}

I wonder if I'm coming a cropper because of the timer. I have in the back of my mind a memory about timers retaining their target, but I think I handle that in the accepted way by calling -invalidate on the timer.

Maybe I shouldn't care about the order in which my dealloc messages appear? With this new scheme described above, I've been able to open and close a document many 10's of times without a crash. But somehow I have a nagging doubt that I've really nailed this down.

Any further advice is greatly appreciated. I've spent a few weeks on and off trying to fix this particular class of crash, and I don't feel I'm much closer to the solution.

Best wishes,

Martin


On 6, Sep, 2012, at 03:01 AM, Graham Cox <email@hidden> wrote:

>
> On 06/09/2012, at 10:44 AM, Jerry Krinock <email@hidden> wrote:
>
>> Regarding the indication, I've yet to find a single hook in Cocoa which gives me a reliable early warning that a document is closing.
>
>
> If your document only has a single window, you could use:
>
> - (void)  windowWillClose:(NSNotification*) notification;
>
> I've found this a reliable place (in fact the ONLY reliable place) to perform tear-down of KVO, etc. Of course if you support multiple windows of the same document that might need a bit of care to make work.
>
>
> --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

  • Follow-Ups:
    • Re: Best data source for table view in document window
      • From: Jerry Krinock <email@hidden>
References: 
 >Best data source for table view in document window (From: Jerry Krinock <email@hidden>)
 >Re: Best data source for table view in document window (From: Kyle Sluder <email@hidden>)
 >Re: Best data source for table view in document window (From: Jerry Krinock <email@hidden>)
 >Re: Best data source for table view in document window (From: Graham Cox <email@hidden>)

  • Prev by Date: Re: Best data source for table view in document window
  • Next by Date: Re: Sandboxing redux
  • Previous by thread: Re: Best data source for table view in document window
  • Next by thread: Re: Best data source for table view in document window
  • Index(es):
    • Date
    • Thread