2015-12-21 74 views
3

此代碼在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); 

我將不勝感激的任何建議。

謝謝。

回答

2

typedef類型通常不具有固有的可空性 - 根據上下文,它們可以很容易地爲空或不可空。 因此,typedef類型不被假定爲非空,即使在 審計區域內。 [1]

下面的語法是工作的罰款

typedef __nonnull id (^MyBlock)(__nonnull id object); 
+0

謝謝!你說得對,它確實有效。我不得不建立乾淨的xcode來放棄警告。 –

+0

你有引用來源嗎?我最近報告了這個bug,但如果我明顯錯了,我想知道。 :) –

+1

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