Re: Unarchiving issues
Re: Unarchiving issues
- Subject: Re: Unarchiving issues
- From: James Maxwell <email@hidden>
- Date: Mon, 2 Aug 2010 10:46:58 -0700
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
> <email@hidden> 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 (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
James B Maxwell
Composer/Doctoral Student
School for the Contemporary Arts (SCA)
School for Interactive Arts + Technology (SIAT)
Simon Fraser University
email@hidden
email@hidden
_______________________________________________
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