Hi Laurent,

Thanks for the hint.  Searched and found some docs that say the same thing.

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/GarbageCollection/Articles/gcFinalize.html

Dave.

On 29 Apr 2010, at 23:08, Laurent Sansonetti wrote:

> Hi Dave,
> 
> Normally, you would do this in -finalize, since -dealloc will not be called 
> under GC.
> 
> Now, I believe (this should be confirmed...) that under GC, 
> NSNotificationCenter & friends automatically unregister observers when they 
> get collected. This is done through the weak reference machinery. It may not 
> be implemented for all observer pattern-based APIs though, so in some cases 
> doing it manually in -finalize might be required...
> 
> One critical thing to keep in mind while writing a -finalize method is to 
> avoid resurrection. The GC does not support that. Make sure you do not insert 
> "self" anywhere it could be "referenced" by a write barrier.
> 
> HTH,
> Laurent
> 
> On Apr 29, 2010, at 11:33 AM, Dave Baldwin wrote:
> 
>> A common design pattern in cocoa seems to be to have a objc method along the 
>> lines:
>> 
>> - (void)dealloc {
>> 
>>    // Stop observing the tool palette.
>>    [[NSNotificationCenter defaultCenter] removeObserver:self 
>> name:SKTSelectedToolDidChangeNotification object:[SKTToolPaletteController 
>> sharedToolPaletteController]];
>> 
>>    // Stop observing the document's canvas size.
>>    [[self document] removeObserver:self forKeyPath:SKTDocumentCanvasSizeKey];
>> 
>>    // memory management stuff removed...
>> }
>> 
>> - taken from the Sketch sample.
>> 
>> One way to handle this would be to add a finalizer method to act in place of 
>> the the dealloc, but is this the best or correct way to handle this?
>> 
>> Thanks,
>> 
>> Dave.
>> 
>> 
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel@lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
> 
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel@lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to