Okay, so here's the initWithCoder from the object that's giving me grief. The variable "continuations" is a float* array, and appears to load fine from here, but disappears once the root object is unarchived and set. I've since discovered that, through a mistake I made at another place in the code, I've been shielded from noticing that all of my encoded float* arrays appear to be doing the same disappearing act. So, I assume I'm doing something really wrong here:
- (void) encodeWithCoder:(NSCoder *)aCoder { // the size for the saved vector NSUInteger size = ([self continuationsSize] * sizeof(float)); // save the length variable [aCoder encodeInt:[self continuationsSize] forKey:@"continuationsSize"]; // encode the float* bytes [aCoder encodeBytes:(uint8_t*)continuations length:size forKey:@"continuations"]; } - (id) initWithCoder:(NSCoder *)aDecoder { if(self = [super init]) { NSUInteger size; // init a bunch of other stuff // set the size of the array (the accessor does the malloc) [self setContinuationsSize:[aDecoder decodeIntForKey:@"continuationsSize"]]; // set the contents of the array continuations = (float*)[aDecoder decodeBytesForKey:@"continuations" returnedLength:&size]; } return self; } Thanks in advance, J. On 2010-08-01, at 8:34 PM, Michael Ash wrote: > On Sun, Aug 1, 2010 at 3:30 PM, James Maxwell > <jbmaxw...@rubato-music.com> wrote: >> Hello All, >> >> I have a strange problem with NSKeyedArchiver/Unarchiver. I have a very >> complex object graph that I want to be persistent, independently of my >> document objects, so I'm archiving it into the user's application support >> folder. The root object for the archive is a class called Network, which >> basically stores very little, but does store the "Hierarchy" for the object >> graph, which is basically just a 2D NSMutableArray (though it's a pretty big >> one). When I unarchive my Network root object, and initWithCoder gets called >> in the Network class, the Hierarchy seems fine -- I can iterate over the >> objects, posting relevant data, and everything looks good. However, once the >> Network is loaded into the application, iterating over the loaded Network >> Hierarchy gives an exc_bad_access error. I'm using the same routine to post >> the data, so nothing's changed there. >> The data that's causing the problem is a float* array, saved using >> encodeBytes:length:forKey, and decoded using >> decodeBytesForKey:returnedLength:, which is how I've saved a number of >> similar float* arrays in the Hierarchy. >> What I don't understand is how the Hierarchy can be fine at the end of the >> Network's initWithCoder method, but then get banjaxed somehow after that. > > Post your code. It's *much* easier to debug code than a loose > description of code. > > Mike > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > 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: > http://lists.apple.com/mailman/options/cocoa-dev/jbmaxwell%40rubato-music.com > > This email sent to jbmaxw...@rubato-music.com James B Maxwell Composer/Doctoral Student School for the Contemporary Arts (SCA) School for Interactive Arts + Technology (SIAT) Simon Fraser University jbmaxw...@rubato-music.com jbmax...@sfu.ca _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com