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

Reply via email to