[swift-evolution] [Pitch] Bridging nil to Objective-C Primitives

Jeff Kelley slaunchaman at gmail.com
Mon Feb 13 21:33:36 CST 2017

Hi all,

I don’t have a formal proposal written up yet, but in my continued quest to
make better-annotated Objective-C code, I had an idea for bridging nil with
primitives. Since in Objective-C we often use constant values to represent
invalid values or nil, the most obvious being NSNotFound, could we use that
as a shorthand for nil? Something like this for NSArray:

- (NSUInteger NS_SWIFT_NIL(NSNotFound))indexOfObject:(ObjectType)anObject;

This is a little verbose, so it could also work with a typedef:

typedef NSUInteger NS_SWIFT_NIL(NSNotFound) NSArrayIndex;
- (NSArrayIndex)indexOfObject:(ObjectType)anObject;

This would change the existing Swift interface to return an Int? instead of
an Int. I see this as working both ways—converting these values to nil when
returning from Objective-C to Swift, and sending these values instead of nil
when Swift calls into Objective-C code.

Is this worth writing up a proposal for? Is another, better method already
in someone’s mind?

Jeff Kelley

SlaunchaMan at gmail.com | @SlaunchaMan <https://twitter.com/SlaunchaMan> |
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170213/ba9cc0b1/attachment.html>

More information about the swift-evolution mailing list