If anyone is interested, this odd crash turns out to be the same issue I was struggling with in the 'Window Controllers & Window Deallocation' ( http://bit.ly/gzd1LI ) thread.
If in the dealloc method of the table controller, I set the table's dataSource and delegate to nil, it will no longer crash. Instruments no longer reports any zombies. Upon a normal quit, Instruments does not report any leaks either. Again, the documentation on Weak References can be found at: Memory Management Programming Guide - Weak References http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html#//apple_ref/doc/uid/20000043-1044135-BCICCFAE Mike Ash has an interesting article on this topic as well: Zeroing Weak References in Objective-C http://www.mikeash.com/pyblog/friday-qa-2010-07-16-zeroing-weak-references-in-objective-c.html On Jan 12, 2011, at 10:08 AM, Eric Gorr wrote: > Try grabbing the project again - I have cleaned up a few things which should > make this a bit easier. > > http://ericgorr.net/cocoadev/TableColumnTest.zip > > It should crash everytime as long as in TableController.m the column are not > being removed from the table first. You will have to go in an comment out > that line of code yourself. > > I have also uploaded two screen recordings showing the crash. > > http://ericgorr.net/cocoadev/TableColumnTestCrash01.m4v > http://ericgorr.net/cocoadev/TableColumnTestCrash02.m4v > > The first movie is just using xcode & the debugger. > The second movie is running with zombies. > >>>> Am 11.01.2011 um 18:06 schrieb Eric Gorr: >>>> >>>>> I've got a sample test project at: >>>>> >>>>> http://ericgorr.net/cocoadev/TableColumnTest.zip >>>>> >>>>> which reproduces the strange crash. >>>>> >>>>> I have a NSTableView to which I need to add NSTableColumns manually using >>>>> the addTableColumn: method. The problem is that for some reason when I >>>>> release the window and everything is being deallocated, someone has an >>>>> extra retain on the table column and it sticks around. This causes a >>>>> crash because the OS tries to redraw the table which really isn't there. >>>>> >>>>> Note: With the code as written, it will only cause a crash sometimes...if >>>>> you comment back in the call to the EventAvail function in >>>>> WindowTestAppDelegate.m, it will crash every time...this is how I ended >>>>> up finding the odd behavior to begin with - I am working with a >>>>> cocoa/carbon app and EventAvail is still being called. >>>>> >>>>> I can avoid the crash if, in my TableController class, I manually remove >>>>> the table column from the table first. Is this what I am expected to do >>>>> if I manually add the column? I would not have thought so, but perhaps I >>>>> am wrong...? >>>>> >>>>> In TableController.m, I have the function GetNewColumn which creates a >>>>> new table column. After I alloc and init the column, I can log the retain >>>>> count of the column and see that it is 1. After I call setWidth: on the >>>>> table column, I can see that the retain count is 2. >>>>> >>>>> Can anyone shed some light on what might be going on here and why it is >>>>> crashing? >>>>> >>>>> (if it matters, I am still running on 10.6.5) _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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 arch...@mail-archive.com