I've narrowed this error down to a very simple test case.

I have a CALayer subclass. In this subclass, I've added properties which are 
synthesized and retained (in fact, they are NSColors). I don't attempt to 
animate these properties.

In my -dealloc method, I'm setting these properties to nil, in accordance with 
normal procedure for a synthesized property, so that whatever I'm retaining 
gets released. When I do this, I always get this error logged to the console:

1/08/11 3:30:48 PM      iTunes[38653]   attempting to modify layer that is 
being finalized - 0x1a2a87f0

It's only logged once, but from then on the whole Core Animation system shuts 
down - I can no longer get any visual display from any layer. I'm guessing that 
this is a 'feature', in that an attempt to modify a layer is for some reason a 
highly dangerous operation during finalization (I'm writing this code as if it 
used retain/release, but it might be using GC, as it's a plug-in hosted by the 
(new, Cocoa) version of iTunes - I don't know whether it uses GC or not). If I 
neglect to clean up these properties, I don't get the error, the CA system 
continues to work, but of course I'm then leaking my colour objects.

What's the proper way to correctly clean up a CALayer subclass and make sure 
I'm not leaking retained properties NOR modifying the layer at finalize time?

--Graham



On 28/07/2011, at 1:07 PM, Graham Cox wrote:

> When I clean-up my visualizer view, I see this in the console: 
> 
> 28/07/11 12:43:40 AM  iTunes[22132]   attempting to modify layer that is 
> being finalized - 0x1ec78650

_______________________________________________

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]

Reply via email to