如何摆脱客观的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); 
+0

谢谢!你说得对,它确实有效。我不得不建立干净的xcode来放弃警告。 –

+0

你有引用来源吗?我最近报告了这个bug,但如果我明显错了,我想知道。 :) –

+1

@HeathBorders看看https://developer.apple.com/swift/blog/?id=25 –