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 protected]> 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 protected])
>
> 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 [email protected]
James B Maxwell
Composer/Doctoral Student
School for the Contemporary Arts (SCA)
School for Interactive Arts + Technology (SIAT)
Simon Fraser University
[email protected]
[email protected]
_______________________________________________
Cocoa-dev mailing list ([email protected])
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 [email protected]