That means you can't programatically release the hardware nor any other objects or buffers allocated when the plugin is initialized.

While I completely agree that -dealloc isn't reliably called (or at all, under most circumstances), and that that's a bug, there is still a way to programatically clean up:

- (void) stopExecution:(id<QCPlugInContext>)context;

Under the Discussion section of the documentation for this method, you'll find the following:

"Discussion
The Quartz Composer engine calls this method when it stops executing. You can optionally override this execution method to perform cleanup tasks."

(from http://developer.apple.com/mac/library/documentation/Cocoa/Reference/QCPlugIn_Class/Introduction/Introduction.html#/ /apple_ref/occ/instm/QCPlugIn/stopExecution: )

It's not dealloc, and it's definitely not following the standard Cocoa conventions for cleanup, and their own examples certainly don't reveal this quirk at all, but I've found that -stopExecution: is effectively equivalent to -dealloc (in terms of cleaning up object-managed resources), and it is reliably called.

Further, outside of the QC editor, -dealloc /is/ reliably called when a QCComposition is released. So it's just the editor that has retain/ release issues, not the underlying QC framework itself. (so other apps that use QC aren't going to run into problems).

--

[ christopher wright ]
[email protected]
http://kineme.net/

Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to