Ken,  Thanks for this insight.

Reading through your comments, I suspect the best way to deal with this is to 
switch entire table views in and out (  or, perhaps,  deal with datasources ).  
I’ll probably do it with table view swapping as this avoids setting up the 
views with each change.

Regards

Peter



> On 26 Sep 2015, at 11:43, Ken Thomases <[email protected]> wrote:
> 
> On Sep 26, 2015, at 5:13 AM, Peter Hudson <[email protected]> wrote:
> 
>> I have an NSTableView in my app which has started to behave differently on 
>> 10.10.
>> 
>> I periodically change the datasource and delegate to the table view ( which 
>> is on screen )
>> This has worked perfectly up until recently.
>> 
>> 
>> After having changed the datasource/delegate to the table view, I confirm 
>> that the table view is aware of the change - by use of  delegate and 
>> dataSource methods.  The result from this indicates that the table view has 
>> had its datasource and delegate updated as I intended.
>> 
>> I then reloadData and display the table view.  Results are as expected.
>> 
>> A short period after, the app will crash. Zombies tells me that the table 
>> view is accessing the previously set datasource for data - not the one that 
>> I have just installed ( and confirmed as being the data source ).
> 
> Show the stack trace of the access to the zombie.
> 
> Remember that, normally, a view-based table view's delegate is used as the 
> owner for the NIB for cell views and row views.  Such views persist.  Some 
> are presumably being displayed and others may be in the reuse queue.  I would 
> not expect that changing the table view's delegate would alter that because 
> there's no good way to do so.  The table view can't know what connections may 
> have been established by the NIB when it was loaded.  (Connections to the 
> NIB's owner would be those to the File's Owner placeholder.  If your cell 
> views or row views are designed in the same NIB as the table view itself then 
> you may have been mislead.  It's not obvious but such views are actually in 
> sub-NIBs encoded into the outer NIB.  Connections to the File's Owner 
> placeholder from objects outside of the table columns end up connecting to 
> the owner of the outer NIB.  Connections to the File's Owner placeholder from 
> objects inside the table columns end up connecting to the table view's 
> delegate.)
> 
> Frankly, I don't think it's a good idea to do this switching like you're 
> doing.  Just have the delegate and data source switch their behaviour as 
> appropriate.  Or swap entire table views in and out.
> 
> Regards,
> Ken
> 


_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to