gpt4 book ai didi

objective-c - 如何覆盖 Objective-C SDK 中错误的可空性注释?

转载 作者:行者123 更新时间:2023-11-28 07:42:59 29 4
gpt4 key购买 nike

它看起来像适用于 iOS 的 GoogleCast SDK(至少是 3.3.0 版本,我们与之前的版本一起发布;也许这已经在我们升级到的较新版本中得到修复,但我想确定一下) 有时会在报告错误时将 nils 发送给委托(delegate),即使注释声称它是非空的。这反过来又会导致我们的 Swift 代码在我们尝试查看错误时崩溃。

假设我不想触及上游 header ,是否有任何方法可以覆盖 header 中的可空性注释?如果我只是定义我的委托(delegate)方法来接收 Error?,我会收到警告。

最佳答案

如果 header 包含在 NS_ASSUME_NONNULL_BEGIN/NS_ASSUME_NONNULL_END 中,并且 header 中没有其他可为 null 的指针,那么您可以制作一个取消定义该宏的包装 header ,并且最后重新定义它。像这样的东西:

#ifdef NS_ASSUME_NONNULL_BEGIN
#undef NS_ASSUME_NONNULL_BEGIN
#endif
#ifdef NS_ASSUME_NONNULL_END
#undef NS_ASSUME_NONNULL_END
#endif

#import "header with bogus prototype.h"

#ifndef NS_ASSUME_NONNULL_BEGIN
#define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
#endif
#ifndef NS_ASSUME_NONNULL_END
#define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
#endif

在这种情况下,您必须更新代码以始终包含包装 header 而不是真正的 header 。

不幸的是,如果有任何其他可空性注释,则 header 中的所有指针参数都必须定义其可空性。

关于objective-c - 如何覆盖 Objective-C SDK 中错误的可空性注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51719280/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com