ios - Objective-C:在可空性注释违规时强制编译错误
<p><p><strong>背景</strong></p>
<p>我们一直在开发公共(public)动态 iOS/macOS 框架。该框架是用 Objective-C 编写的,但它与 Swift 完全兼容。</p>
<p>最近,我们为我们的一种公共(public) API 方法更改了可空性注释:</p>
<p>来自</p>
<pre><code>- (void)setServer:(nullable ABCLocation *)location;
</code></pre>
<p>到</p>
<pre><code>- (void)setServer:(nonnull ABCLocation *)location;
</code></pre>
<p>,因此开发人员需要创建 <code></code> 实例并将其传递给新的 API。 </p>
<p><strong>问题</strong></p>
<p>现在,我们关心的是,如何强制/通知开发人员围绕我们的新 API 更改他们现有的代码? </p>
<p>将 API 与 <em>Swift</em> 一起使用时,它似乎可以通过抛出错误很好地处理可空性。</p>
但是,<p><em>Objective-C</em> 仅在传递 <code>nil</code> 时生成警告,而 Xcode 什么也不做,当开发人员将 <code>nullable</code> 属性传递给方法。 </p>
<p>我们如何强制开发人员更改他们的 API?这里的常见做法是什么?</p>
<p><strong>UPD:</strong></p>
<p>我们将框架作为二进制文件分发,使用 <em>Release</em> 配置构建,其中关闭了断言。</p>
<p><strong>UPD #2:</strong></p>
<p>到目前为止,我们已经接受了从 Objective-C 使用 API 的现实。但是,我们实现了“故障安全”行为:如果传递了 <code>nil</code>,则该方法在内部创建 <code></code> 实例并隐式传递它。 </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>在未满足注释时生成警告是一种很好的做法。在 API 中进行 <code>nullable</code> -> <code>nonnull</code> 之类的更改是不行的。</p></p>
<p style="font-size: 20px;">关于ios - Objective-C:在可空性注释违规时强制编译错误,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/46823907/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/46823907/
</a>
</p>
页:
[1]