On Jul 21, 2008, at 7:23 PM, Michael Ash wrote:
Without investigating things more deeply, just from the basic stuff I know about the classes in question, I'd assume that the NSCollectionView owns the NSCollectionViewItems and the views, and the NSCollectionViewItems would also own the views. Where is the retain cycle?
Well there is none in the default setup, of course. But here's a non far-fetched example to easily create one.
If you're implementing a custom NSView that for some reason has to have access to the NSCollectionViewItem or NSCollectionView it belongs to, the only proper way to do so (in the collection view world) is by accessing the NSCollectionViewItem which has a -collectionView method that returns the collection view.
So you need a way back and this you do with a pointer to the NSCollectionViewItem in a suitable place. As you don't know the ownership circumstances of NSCollectionViewItem and its view the safest thing to do is to retain the NSCollectionViewItem in the view. There's the retain cycle, because - as it turns out - the NSCollectionViewItem seems to retain the view.
The point of all this is not that it's avoided easily - which it is. The point is that you can't know the circumstances unless it's documented and the original question was how AppKit does avoid things like that.
Now that I read more on retain cycles it's clear there is no ingenious Cocoa solution to this problem, just plain old defensive programming techniques - which is what I was wondering about.
Regards Markus -- __________________________________________ Markus Spoettl
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ 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]
