On Fri, Aug 19, 2016, at 06:08 PM, Charles Srstka wrote:
> > On Aug 19, 2016, at 3:46 PM, Quincey Morris 
> > <quinceymor...@rivergatesoftware.com> wrote:
> > 
> > On Aug 19, 2016, at 10:53 , Charles Srstka <cocoa...@charlessoft.com 
> > <mailto:cocoa...@charlessoft.com>> wrote:
> >> 
> >> [NSArray array] is a synonym for [[[NSArray alloc] init] autorelease].
> > 
> > (along with other similar comments in other responses)
> > 
> > To be pedantic, it’s *implemented* as [[[NSArray alloc] init] autorelease], 
> > but the lack of an API contract to that effect means that “synonym” isn’t 
> > quite accurate.
> > 
> > My point is that Apple might revisit the implementation of NSArray at any 
> > time (in these Swiftian days, stranger things have happened), and choose to 
> > write it with full ARC compatibility, which means there might not be any 
> > autorelease when invoked from ARC client code, since ARC can optimize the 
> > code when it handles both ends of the invocation.
> 
> Swift typically just calls the initializer if it’s there, so the
> convenience initializers like +[NSArray array] are really only relevant
> to Objective-C code. For that reason, I doubt they’d change unless Apple
> did something crazy like rewrite the entire frameworks in Swift, in which
> case they’d probably go away.

There is an official reimplementation of Foundation/CoreFoundation in
Swift. The implementation of NSObject lacks a `static func new`:
<https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/NSObject.swift>
Likewise, Swift explicitly does not bridge `+new` from ObjC, so this is
a moot point in Swift code.

> So for the foreseeable future, the
> difference is that +array returns an autoreleased object, meaning that in
> ARC code, +new is the better choice.

I would not make that assumption. Who says +[NSArray array] constructs
anything at all? Try comparing the return values of two calls to
[NSArray array] sometime. ;-)

I happen think +new is more readable, but it’s really just a matter of
preference.

--Kyle Sluder

_______________________________________________

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