Le 12 mars 2013 à 20:15, Dave <d...@looktowindward.com> a écrit :

> 
> On 12 Mar 2013, at 18:50, Jens Alfke wrote:
> 
>> 
>> On Mar 12, 2013, at 9:44 AM, John McCall <rjmcc...@apple.com> wrote:
>> 
>>> However, that wouldn't be an idiomatic implementation.  The usual 
>>> expectation is that allocating methods, like +new methods, construct an 
>>> object *of type self* (at least).
>> 
>> Are you just quibbling about the prefix “new-“? The specific method +new is 
>> expected to create a new instance of the receiving class, yes. There may be 
>> a convention (I can’t remember?) that class methods prefixed “new-” are 
>> intended to do the same.
> 
> I'm not sure if its a convention, but it does make sense, for instance, I've 
> been code like this before.
> 
> -(NSDictionary) newDictForSomethingWithInfo:(Info*) theInfo
> {
> // returns an dictionary allocated and initialized
> }
> 
> somewhere else in the same class:
> 
> myDict = [self newDictForSomethingWithInfo:myInfo];
> 
> Which keeps the compiler/analyzer happy in non-ARC and works ok with ARC 
> enabled. If this isn't a convention then it should be IMO unless there is 
> another prefix used? allocDict would work, but this is as bad or as good as 
> new in this respect.
> 

According to the clang manual: 
http://clang.llvm.org/docs/LanguageExtensions.html#related-result-types

The related result type can also be inferred for some methods. To determine 
whether a method has an inferred related result type, the first word in the 
camel-case selector (e.g., “init” in “initWithObjects”) is considered, and the 
method will have a related result type if its return type is compatible with 
the type of its class and if:

        • the first word is “alloc” or “new”, and the method is a class method, 
or
        • the first word is “autorelease”, “init”, “retain”, or “self”, and the 
method is an instance method.

So new prefixed class method should return an instance of the calling class, 
but instance methods are just required to returned a retained object of any 
kind.


-- Jean-Daniel





_______________________________________________

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

This email sent to arch...@mail-archive.com

Reply via email to