I think the decision to import Obj-C APIs with implicitly unwrapped optionals was a very pragmatic decision at the time. However, given it&#39;s been over a year (I think?) since the nullability specifiers have been available, I agree with you this could now be improved.<br><br>I personally prefer #2: it mimics the old Obj-C behavior (&quot;calling a method on nil doesn&#39;t do anything and any method can take or return nil&quot;) if you use &quot;?.&quot; everywhere. This would be somewhat cumbersome, but like you say would encourage library developers to add these specifiers.<br>In practice, many developers will work with Apple&#39;s frameworks, and Apple has done a great job tagged all/most of their APIs!<br><div class="gmail_quote"><div dir="ltr">On Tue, Dec 8, 2015 at 4:09 AM Fabian Ehrentraud via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Swift code accessing Objective-C methods can easily crash - if the Objective-C code does not include nullability attributes, the code is brought as implicitly unwrapped into Swift, where unsafe accesses do not produce compiler warnings.<br>
<br>
I created issue SR-104 for this, but as suggested by Jordan Rose it should be discussed on this mailing list first.<br>
<br>
Short example:<br>
<br>
// Objective-C<br>
- (NSString *)giveMeAString { return nil; }<br>
<br>
// Swift<br>
func thisWillCrash() {<br>
    let string = someObjectiveCObject.giveMeAString()<br>
    let length = string.length // crash<br>
}<br>
<br>
The ClangImporter could handle this issue in several safer ways:<br>
<br>
1. Only import declarations that are nullability annotated (as proposed by Greg Parker)<br>
Positive side effect would be that it would motivate to write nullability annotations.<br>
<br>
2. Import un-annotated code as Optional<br>
Values would need to be unwrapped every time, which does not hurt too much due to the easy use of the `?` syntactic sugar.<br>
<br>
What do you think? Would this make Swift more safe when used together with Objective-C?<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div><div dir="ltr">-- <br></div>Javier Soto