NSDocument/NSFileWrapper troubles
NSDocument/NSFileWrapper troubles
- Subject: NSDocument/NSFileWrapper troubles
- From: Christopher Erbach <email@hidden>
- Date: Thu, 31 Jul 2003 02:58:07 -0500
I'm having troubles with some NSDocument code that I, a Cocoa newbie,
wrote. I'm trying to preserve an NSFileWrapper passed by
loadFileWrapperRepresentation:ofType: within the NSDocument. If I
create a new file, I can save it, even multiple times, and all's well
and good. However, when I load a file from disk and try to save it
again, my application crashes.
If I comment out my "wrapper = newWrapper" line in
loadFileWrapperRepresentation, the application runs and saves, albeit
without loading any of the data. This looks eerily like a simple retain
problem, but if it is, my newbie eye certainly can't find it.
I sliced the detailed pieces for loading and saving out of the
routines. What's left is enough to cause the crashing behavior when
saving files, which actually occurs after the loading/saving is
complete during the event loop, not anywhere that's easily debuggable.
~ Chris Erbach
// From CocoaDream.h:
@interface CocoaDream : NSDocument
{
NSFileWrapper * wrapper;
IBOutlet NSTextView * entryBody;
IBOutlet NSFormCell * subjectBox;
IBOutlet NSFormCell * dateBox;
}
// From CocoaDream.m:
- (BOOL)loadFileWrapperRepresentation:(NSFileWrapper *)newWrapper
ofType:(NSString *)type {
NSEnumerator * fileEnum;
id curFile;
NSMutableDictionary * metadata;
NSString ** error = nil;
[newWrapper retain];
[wrapper release]; // Useless, logically, conventionally, valuable
wrapper = newWrapper; // Commenting this line prevents the crashes
return true;
}
- (void)windowControllerDidLoadNib:(NSWindowController *) aController
{
[super windowControllerDidLoadNib:aController];
[wrapper release];
if (wrapper == nil) {
// Only used if we haven't loaded a wrapper, earlier, from
loadFileWrapperRepresentation yet
wrapper = [[NSFileWrapper alloc]
initDirectoryWithFileWrappers:[[NSDictionary alloc] init]];
}
}
- (NSFileWrapper *)fileWrapperRepresentationOfType:(NSString *)type {
NSMutableDictionary * metaData = [[NSMutableDictionary alloc] init];
NSData * htmlData = nil;
NSString ** error = nil;
return wrapper;
}
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.