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

Reply via email to