背景
我们一直在开发公共(public)动态 iOS/macOS 框架。该框架是用 Objective-C 编写的,但与 Swift 完全兼容。
最近,我们更改了一种公共(public) API 方法的可空性注释:
来自
- (void)setServer:(nullable ABCLocation *)location;
至
- (void)setServer:(nonnull ABCLocation *)location;
,因此开发人员需要创建 [ABCLocation default]
实例并将其传递给新的 API。
问题
现在,我们关心的是,如何强制/通知开发人员围绕我们的新 API 更改他们现有的代码?
当将 API 与 Swift 一起使用时,它似乎可以通过抛出错误来很好地处理可空性。
Objective-C 仅在传递 nil
时生成警告,当开发人员将 nullable
属性传递给方法。
我们如何强制开发人员更改他们的 API?这里有哪些常见做法?
更新:
我们将框架作为二进制文件分发,使用Release配置构建,其中断言被关闭。
更新#2:
到目前为止,我们已经接受了从 Objective-C 使用我们的 API 的现实。但是,我们实现了“故障安全”行为:如果传递 nil
,该方法会在内部创建 [ABCLocation default]
实例并隐式传递它。
最佳答案
当注释不满足时生成警告是一个很好的做法。在 API 中进行诸如 nullable
-> nonnull
之类的更改则不然。
关于ios - Objective-C:在违反可空性注释时强制执行编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823907/