问题标签 [objective-c-nullability]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 奇怪的 CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION 警告
我已经激活了新的编译器警告CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION
。我可以解决大部分警告,但一个源于宏,我不知道如何解决这个问题。
宏如下所示:
我收到以下错误:
从可空指针 'NSString * _Nullable' 到不可空指针类型 'NSString * _Nonnull' 的隐式转换
知道如何重写宏吗?
我已经尝试过__PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS/__PRAGMA_POP_NO_EXTRA_ARG_WARNINGS
了,但没有帮助。
objective-c - 处理注释不佳的 Objective-C 方法?
自从我使用 Objective-C 以来已经有一段时间了(而且我是 Swift 的新手),所以请耐心等待。但是,我注意到一些“可空性注释”要么根本没有意义,要么与 Apple 的文档完全矛盾。以下面的NSURL
类方法为例:
您会注意到error
参数中添加了注释,因此应该假设此方法已被注释,对吗?
如果是这种情况,人们还会假设由于relativeToURL
参数没有添加可空性注释,因此它不能为空。
我实际上是否理解 Objective-C 的新可空性注释?
如果是这样,为什么要relativeURL
专门说明文档(粗体格式是我的):
要解析应用范围的书签,请使用nil值。
我理解新注释背后的原因,但是它们在现有类中受到了如此大的影响,以至于我不太了解它们的好处。我错过了什么吗?
objective-c - 我们能否确保`+ (nonnull instancetype)sharedInstance;` 的可空性?
这是一个关于如何优雅地规避init
in NSObject
class 的可空性的问题。
所以这是一个经典的objective-c实现:
但现在我想将其声明为nonnull
,如果可能的话:
不幸的是,init
返回一个nullable instancetype
值。我应该NSAssert
在调用后添加一个或其他内容init
吗?
我注意到有些人甚至将价值观记录nonnull
为现实nullable
。那有意义吗?
我是否应该大胆地在NS_ASSUME_NONNULL_BEGIN
所有地方简单地添加,而不真正确保值是nonnull
?
ios - `[UIView initWithFrame:]` 的文档冲突:可为空还是非空?
使用CLANG_ANALYZER_NONNULL
(ie -Xclang nullability
),我得到“从预期返回非空值的函数返回 Null ”:
使用 Xcode 7.3 和 iOS 9.3 文档,我检查initWithFrame:
并返回nil
:
但是 UIView.h 用 封装了所有东西NS_ASSUME_NONNULL_BEGIN
,所以我们可以解释如下:
作为:
所以文档解释它是nullable
,而头文件说它是nonnull
. 相信哪一个?
我应该写:
或者:
更新
Xcode 文档已更新,现在是:
所以没有更多的冲突。
ios - Clang 可空性警告以及如何处理它们
最近我打开CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION
了 Xcode,但我的 Objective-C 代码中出现了与可空性相关的警告,让我不知所措。最普遍的一种警告类型是Implicit conversion from nullable pointer 'TypeA * _Nullable' to non-nullable pointer type 'TypeA * _Nonnull'
.
我开始尝试通过在此处描述的方法中创建相同类型的本地来删除这些警告。 https://www.mail-archive.com/xcode-users%40lists.apple.com/msg02260.html 这篇文章说首先使用本地,该对象的属性未指定可以为空,因此可以用作合法参数到期望非空的方法。
但我觉得这是一种逃避行为,实际上并没有以任何有益的方式解决问题。
有人做过这个练习吗?如果您能分享您采取的策略,我将不胜感激。
objective-c - xcode 7.3.1 看不到可空性警告
最近我回到了我以前的一个项目,做一些更新,我想我可以使用 Xcode 的新可空性功能。我为我的一些属性添加了可空性,如下所示:
但似乎在使用此属性在数组中设置值时我没有收到任何警告。我找到了一些关于摆脱所有可空性警告的文章,但实际上我有一个相反的问题,我希望这些警告出现在我的 Xcode 中,这样我就可以做出适当的反应,这有可能吗?
谢谢!
更新
我认为应该显示警告的代码:
objective-c - Are _Nullable and _Nonnull useful for anything other than Swift interop?
Does the Objective-C compiler actually warn you if it thinks that you may be passing nil
to a parameter marked with _Nonnull
?
Or is it merely a hint to whatever tool converts between Swift and Objective-C to better deal with Swift optionals?
objective-c - 如何清除不匹配的参数:AppCode 中的 nullable 和 FooType 不兼容警告
这可能是一个 AppCode 问题,因为 Xcode 没有标记这个特定场景。
我在 AppCode 的各个地方都看到了这个错误:
其中 FooType 可以是任何类型。
这是一个演示该问题的调用:
toItem值被标记为警告的位置。
查看 API,toItem参数可以为空:
这是由我调用 API 的方式引起的吗?或者它是 AppCode 中的一个小故障(除了“切换到 getter 模式”之外没有提供任何建议,这没什么区别。)
ios - NS_ASSUME_NONNULL_END 之后的可空性注释警告
我正在努力向头文件的一部分添加一些可空性注释,并且我希望该块假定非空,但之后几乎每个方法都发出警告说我需要添加可空性注释。
下面的示例代码:
我是否错误地理解了这些宏?我以为它会包含据说在 BEGIN/END 块内被审计的部分,但外面的一切仍然是_Null_unspecified
这是按预期工作吗,还是我必须做些什么才能使这项工作按我的想法进行?