Re: Does setFormatter() retain?
Re: Does setFormatter() retain?
- Subject: Re: Does setFormatter() retain?
- From: Andy Lee <email@hidden>
- Date: Sun, 28 Aug 2016 22:26:33 -0400
On Aug 24, 2016, at 4:25 PM, Jens Alfke <email@hidden> wrote:
>
>> On Aug 24, 2016, at 1:04 PM, Andreas Falkenhahn <email@hidden> wrote:
>>
>> Now, will "setFormatter" call retain on "formatter" or not? Looking
>> at "retainCount" seems to suggest so, although I know that this
>> isn't reliable and shouldn't be done at all...
>
> These days, with ARC, we call those “strong references” vs. “weak” or “unretained” references.
It used to be that when someone mentioned looking at retainCount there would a flurry of admonitions not to do that. This thread doesn't feel complete without such an admonition, so I'll refer you to this.
:)
<https://developer.apple.com/reference/objectivec/1418956-nsobject/1571952-retaincount>
> Do not use this method.
> Strong (retained) references are the default for properties. There are a few cases in system frameworks where a property is weak or unretained — usually this is used for delegates or data sources, to avoid reference cycles that can lead to memory leaks. In this case the docs should call out the style of the reference. If there’s no mention of it, you can assume it’s strong.
Yup. That said, there's at least four ways to find out how a property is declared -- bearing in mind what others have said about how you should focus on what *you* do with the formatter object, not so much what the NSTextField object does.
1. The docs show the Objective-C declarations of properties and methods. What might happen is:
- You'd look at the docs for NSTextField.
- You wouldn't see the formatter property in those docs.
- You'd check the docs for its superclass, NSControl.
- You'd see this:
@property(strong) __kindof NSFormatter *formatter
2. Alternatively, you might be looking at this line of code...
[textField setFormatter:formatter];
...and you might Option-click on the "setFormatter" and see popup help showing the same Objective-C declaration.
3. You might do a *plain* click on "setFormatter" and hit Option-Command-2 to show the Quick Help inspector, which again shows the same declaration. I'm a big fan of Quick Help.
4. If you don't trust the docs and only trust code, you might Command-click on "setFormatter", which will open NSControl.h and select the declaration of the property. On the machine I'm using now, I get the following, which I see has the additional "nullable" keyword:
@property (nullable, strong) __kindof NSFormatter *formatter;
--Andy (a few days behind on my email)
_______________________________________________
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