• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: ARC dealloc best pratice
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ARC dealloc best pratice


  • Subject: Re: ARC dealloc best pratice
  • From: Jonathan Mitchell <email@hidden>
  • Date: Fri, 06 Feb 2015 19:55:06 +0000

> On 6 Feb 2015, at 17:34, Jens Alfke <email@hidden> wrote:
>> On Feb 6, 2015, at 6:48 AM, Jonathan Mitchell <email@hidden> wrote:
>>
>> 	// remove observers
>> 	// unregister for notifications
>
> I have to confess I'm still not completely certain whether these are needed under ARC. I remember reading something about at least one of these being handled automatically, but I just skimmed through some docs now and couldn't find anything. I tend to put these in my classes but always wonder whether I strictly need to.
I would say it is necessary. Warnings result otherwise and unremoved observers do seem to lead to instability.

>
>> 	// set any non-weak delegates to nil (NSTableView et al)
>
> I think you meant "set any _weak_ delegates to nil", i.e. clear the delegate property of any object of whom I'm the delegate. Non-weak doesn't make sense, because if a delegate has a strong reference to self, then self can't possibly be in its dealloc method.
Sorry. I wasn’t clear enough probably.
Most of my issues centre around NSViewController.
Say I have an outlet to an NSTableView and the tableView.delegate = self.
The tableView.delegate is not a zeroing weak ref - in the lingo of ARC it is unsafe_unretained I believe
self can be deallocated leaving tableView.delegate as a dangling pointer.

>
> Note that this is only necessary if (a) the other object can outlive self, and (b) the other object could still send the delegate messages in the future.
>
The problem is that there is, I believe, no way to accurately determine whether a or b is true in any particular instance!
Recently I have resolved issues where both NSTableView and WebView were sending delegate messages and responder chain actions in situations that I hadn’t expected.
A stone dead app is the result.

Jonathan
_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden


  • Follow-Ups:
    • Re: ARC dealloc best pratice
      • From: Jens Alfke <email@hidden>
    • Re: ARC dealloc best pratice
      • From: Alex Zavatone <email@hidden>
References: 
 >ARC dealloc best pratice (From: Jonathan Mitchell <email@hidden>)
 >Re: ARC dealloc best pratice (From: Jens Alfke <email@hidden>)

  • Prev by Date: Re: Convert to NSString from
  • Next by Date: Re: ARC dealloc best pratice
  • Previous by thread: Re: ARC dealloc best pratice
  • Next by thread: Re: ARC dealloc best pratice
  • Index(es):
    • Date
    • Thread