Re: Question about Archives and Serialisations Programming Guide
Re: Question about Archives and Serialisations Programming Guide
- Subject: Re: Question about Archives and Serialisations Programming Guide
- From: Alex Zavatone <email@hidden>
- Date: Fri, 05 Feb 2016 08:37:15 -0500
The first question is, “Do you have any circular references?”
On Feb 5, 2016, at 8:13 AM, Dave <email@hidden> wrote:
> Hi,
>
> I’m having problems with Back Links when Archiving/Unarchiving an Object. I found the text below at:
>
> https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Archiving/Articles/archives.html
>
>
> Root Object
>
> An object graph is not necessarily a simple tree structure. Two objects can contain references to each other, for example, creating a cycle. If a coder follows every link and blindly encodes each object it encounters, this circular reference will generate an infinite loop in the coder. Also, a single object can be referenced by several other objects. The coder must be able to recognize and handle multiple and circular references so that it does not encode more than one copy of each object, but still regenerate all the references when decoding.
> To solve this problem, NSCoder introduces the concept of a root object. The root object is the starting point of an object graph. To encode an object graph, you invoke the NSCoder method encodeRootObject:, passing in the first object to encode. Every object encoded within the context of this invocation is tracked. If the coder is asked to encode an object more than once, the coder encodes a reference to the first encoding instead of encoding the object again.
>
> NSCoder does not implement support for root objects; NSCoder’s implementation of encodeRootObject: simply encodes the object by invoking encodeObject:. It is the responsibility of its concrete subclasses to keep track of multiple references to objects, thus preserving the structure of any object graphs.
>
> The last paragraph seems pertinent to my problem, so do I need to do something special for “weak”, back links in order to “keep track of multiple references to objects”? If so could some please tell me how to do this? I’m really struggling to get something out the door and was advised to use the Keyed Archiver/Unarchiver as it would be the simplest implementation……
>
> Is this any other documentation or sample code available? There are plenty of trivial examples out there, no nothing I can find that works for weak back links, although according to all the Apple Blurb I can find, it is possible, they just don’t tell you how to do it that I can find!
>
> Thanks in Advance for Any Help
> All the Best
> Dave
>
> _______________________________________________
>
> 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
_______________________________________________
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