<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>I think the biggest problem we're going to face with this one is changes to Objective-C are out of scope for Swift Evolution. Apple tend to be the ones in control of the development of new Objective-C features and compatibility because they control the compiler.</div><div id="AppleMailSignature"><br></div><div id="AppleMailSignature">That said, as a request to Apple for this change, I think it's a reasonable idea for Ints, but I'm not sure of its feasibility for other types. Could the API be descriptive enough to cover enough types? (Eg CGRectNull)</div><div id="AppleMailSignature"><br></div><div id="AppleMailSignature"><br></div><div>On 14 Feb 2017, at 2:33 pm, Jeff Kelley via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr">Hi all,<div><br></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>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 <font face="monospace, monospace">nil</font> with primitives. Since in Objective-C we often use constant values to represent invalid values or&nbsp;<font face="monospace, monospace">nil</font>, the most obvious being <font face="monospace, monospace">NSNotFound</font>, could we use that as a shorthand for <font face="monospace, monospace">nil</font>? Something like this for <font face="monospace, monospace">NSArray</font>:</div><div><br></div><div><font face="monospace, monospace">- (NSUInteger NS_SWIFT_NIL(NSNotFound))indexOfObject:(ObjectType)anObject;</font></div><div><br></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>This is a little verbose, so it could also work with a <font face="monospace, monospace">typedef</font>:</div><div><br></div><div><font face="monospace, monospace">typedef NSUInteger NS_SWIFT_NIL(NSNotFound) NSArrayIndex;</font></div><div><font face="monospace, monospace">- (NSArrayIndex)indexOfObject:(ObjectType)anObject;</font><br></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>This would change the existing Swift interface to return an <font face="monospace, monospace">Int?</font> instead of an <font face="monospace, monospace">Int</font>. I see this as working both ways—converting these values to <font face="monospace, monospace">nil</font> when returning from Objective-C to Swift, and sending these values instead of <font face="monospace, monospace">nil</font> when Swift calls into Objective-C code.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Is this worth writing up a proposal for? Is another, better method already in someone’s mind?</div><div><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div style="font-family:helvetica"><br></div><div style="font-family:helvetica">Jeff Kelley</div><div style="font-family:helvetica"><br></div><div style="font-family:helvetica"><a href="mailto:SlaunchaMan@gmail.com" style="color:rgb(17,85,204)" target="_blank">SlaunchaMan@gmail.com</a>&nbsp;|&nbsp;<a href="https://twitter.com/SlaunchaMan" style="color:rgb(17,85,204)" target="_blank">@SlaunchaMan</a>&nbsp;|&nbsp;<a href="http://jeffkelley.org/" style="color:rgb(17,85,204)" target="_blank">jeffkelley.org</a></div></div></div></div>
</div></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote></body></html>