如何摆脱客观的c typedef中的可空性警告?
问题描述:
此代码在XCode中产生一个“指针缺少可空性类型说明符”的警告,我无法猜测如何使警告无效。如何摆脱客观的c typedef中的可空性警告?
NS_ASSUME_NONNULL_BEGIN
@interface MyClass : NSObject
typedef id (^MyBlock)(id object);
@end
NS_ASSUME_NONNULL_END
下不沉默警告:
typedef __nonnull id (^MyBlock)(__nonnull id object);
typedef nonnull id (^MyBlock)(nonnull id object);
我将不胜感激的任何建议。
谢谢。
答
typedef类型通常不具有固有的可空性 - 根据上下文,它们可以很容易地为空或不可空。 因此,typedef类型不被假定为非空,即使在 审计区域内。 [1]
下面的语法是工作的罚款
typedef __nonnull id (^MyBlock)(__nonnull id object);
谢谢!你说得对,它确实有效。我不得不建立干净的xcode来放弃警告。 –
你有引用来源吗?我最近报告了这个bug,但如果我明显错了,我想知道。 :) –
@HeathBorders看看https://developer.apple.com/swift/blog/?id=25 –