• 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
tableView - message sent to deallocated instance
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

tableView - message sent to deallocated instance


  • Subject: tableView - message sent to deallocated instance
  • From: Pax <email@hidden>
  • Date: Tue, 25 Feb 2014 20:39:20 +0000

This is a really weird problem (in my view, anyway), because it only occurs in a very particular set of circumstances.  My application is NSDocument based (just in case it makes a difference), and my application uses ARC.

I have an NSArray of NSDictionary containing file information, and this is displayed in an NSTableView.

If I open the document and then shut it again without doing anything, all is well.  The memory is released as it should be, and the document closes neatly.
If I open the document and then double click on a file in the list, the data in that file is unpacked into a file in my application's cache folder and is then opened (using [[NSWorkspace sharedWorkspace] openFile:filepath];).  If I then close the opened file and then close my document, the memory is released as it should be, and the document closes neatly.
If I open the document and then double click on a file in the list, but then close my document **before** closing the newly opened file my application crashes with "message sent to deallocated instance".

I can't for the life of me work out why this crash is happening. My understanding was that, once [[NSWorkspace sharedWorkspace] openFile:filepath] completes the newly opened file is entirely independent of the application or process that spawned it.  Am I right in supposing that there's some magic thread which means that my application knows that it has opened a document, and that document hasn't yet been closed?  Is there some observer at work here - and, if so, how do I fix it?

The code:
- (void)openAttachmentInViewer:(id)sender
{
    @autoreleasepool
    {
        NSString* filepath;

        if ([_attachmentTable selectedRow] < 0 || [_attachmentTable selectedRow] >= [attachmentArray count]) return;

        if ([_attachmentTable numberOfSelectedRows] == 1)
        {
            id record = [attachmentArray objectAtIndex:[_attachmentTable selectedRow]];
            NSArray* paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

            NSString* pathStem;

            //Check for Viewer directory in Caches and create it if it doesn't exist
            NSFileManager *fileManager= [NSFileManager defaultManager];
            NSError *error = nil;
            if(![fileManager createDirectoryAtPath:[NSString stringWithFormat:@"%@/Viewer",[paths objectAtIndex:0]]
                       withIntermediateDirectories:YES
                                        attributes:nil
                                             error:&error])
            {
                NSLog(@"Failed to create directory \"%@\". Error: %@ - Cached file saved in general cache folder.",
                      [NSString stringWithFormat:@"%@/Viewer",[paths objectAtIndex:0]],
                      error);
                pathStem = [paths objectAtIndex:0];
            }
            else
            {
                pathStem = [NSString stringWithFormat:@"%@/Viewer",[paths objectAtIndex:0]];
            }

            filepath = [NSString stringWithFormat:@"%@/%@",pathStem,[record objectForKey:@"name"]];

            NSData* thisAttachment = [[NSData alloc] initWithData:[record objectForKey:@"data"]];
            [thisAttachment writeToFile:filepath atomically:NO];


            [[NSWorkspace sharedWorkspace] openFile:filepath];

        }
    }
}


All ideas and suggestions welcome!
_______________________________________________

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: tableView - message sent to deallocated instance
      • From: Fritz Anderson <email@hidden>
  • Prev by Date: Protocols and forwardingTargetForSelector:
  • Next by Date: Re: Protocols and forwardingTargetForSelector:
  • Previous by thread: Re: Protocols and forwardingTargetForSelector:
  • Next by thread: Re: tableView - message sent to deallocated instance
  • Index(es):
    • Date
    • Thread