On Sun, Jul 13, 2008 at 6:15 PM, Rob Rothwell <[EMAIL PROTECTED]> wrote: > Can someone explain what a "weak" vs (I am guessing) "strong" reference is? [snip] > I, too, am maintaining parent/child relationships in my application and have > just been doing something like: > Parent>>createChild > |child| > child := Child new parent: self. > ^child > I am assuming, given my troubles, that this is NOT a weak reference?!
Hi Rob, Have a look at the class comment on WeakArray: "WeakArray is an array which holds only weakly on its elements. This means whenever an object is only referenced by instances of WeakArray it will be garbage collected." My understanding of this is that garbage collection is done by reference counting, and so the situation you described may result in parent and child forming a circular reference to each other, and so never being collected - but it depends on what you do with that return value. I note that there are very few uses of any Weak* classes in the image, so it's likely that there is a better way of implementing what you're aiming for; eg the child could drop its direct parent reference, and do something like Child>>parent ^ Parent allInstances detect: [ :each | each children includes: self ] (or vice versa depending on which way you're more likely to traverse the relationship). This is just me thinking out loud though - perhaps someone else could comment on best practice in this case. "Smalltalk Best Practice Patterns" is very useful in answering these types of questions, but my copy is in a box somewhere at the moment. Hope this helps, Michael _______________________________________________ Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners