什么是警告的原因“指针缺少可空性类型说明符”?

时间:2016-02-24 11:22:04

标签: ios objective-c-nullability

+ (UIColor*) getColorWithHexa(NSString*)hexString;

enter image description here

这是我班级的方法定义。这引起了警告。类似警告的原因是什么?如何解决?

我正在返回一个UIColor对象,而那个问题与块有关,这是在注释中给出的。

所以,这很有用。

2 个答案:

答案 0 :(得分:15)

  

<强> NS_ASSUME_NONNULL_BEGIN / END:

     

注释Objective-C头文件中的任何指针会导致   编译器期望整个文件的注释,带来一个   级联的警告。鉴于大多数注释都是非空的,a   新宏可以帮助简化注释现有的过程   类。只需标记标题部分的开头和结尾即可   使用NS_ASSUME_NONNULL_BEGIN和..._ END,然后标记例外。

所以,你只需要做。

NS_ASSUME_NONNULL_BEGIN
+ (UIColor*) getColorWithHexaCode:(NSString*)hexString;
NS_ASSUME_NONNULL_END

这在

中定义
  

&#34; NSObjCRuntime.h&#34;

     

#define NS_ASSUME_NONNULL_BEGIN _Pragma(&#34; clang assume_nonnull begin&#34;)
   #define NS_ASSUME_NONNULL_END _Pragma(&#34; clang assume_nonnull end&#34;)

答案 1 :(得分:7)

您在使用_Nonnull_Nullable_Null_unspecified__nullable__nonnullnullable的文件中的某个位置时收到此警告或nonnull。如果通过宏添加说明符也可能发生。

修正警告:

  • 您可以删除所有出现的可为空性(不推荐)
  • 您可以使用_NonnullNS_ASSUME_NONNULL_BEGIN(推荐)假设所有参数和返回值均为NS_ASSUME_NONNULL_END