ios - 使用typedef 属性出现Pointer is missing a nullability type specific 的警告
PHPz
PHPz 2017-04-17 17:30:11
0
2
861
  1. 描述你的问题

Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

警告如上
程序运行正常,全部加上__nonnull 就好了,为什么?

  1. 贴上相关代码

typedef void (^completionHandlerBlock)(NSURL * _Nullable localfile, NSURLResponse * _Nullable response, NSError * _Nullable error);
//NS_ASSUME_NONNULL_BEGIN
@interface DownLoadImages : NSObject

@property (nonatomic, strong) NSURL *imageURL;

- (instancetype)initWithURL:(NSURL *)contentURL;
- (void)startDownloadingImage:(completionHandlerBlock)completionHandler;
@end

.h文件

  1. 贴上相关截图

  2. 已经尝试过哪些方法仍然没解决(附上相关链接)
    //NS_ASSUME_NONNULL_BEGIN

//NS_ASSUME_NONNULL_END
使用这个只能消除属性警告

PHPz
PHPz

学习是最好的投资!

全部回覆(2)
巴扎黑

這個不是因為typedef的問題,是你定義的 block 裡面出現了_Nullable關鍵字。如果你去掉就不會報 warning 了:typedef的问题,是你定义的 block 里面出现了_Nullable关键字。如果你去掉就不会报 warning 了:

typedef void (^completionHandlerBlock)(NSURL * localfile, NSURLResponse * response, NSError * error);

解决就两种方法:

  1. 去掉_Nullable关键字。反正默认就是 nullable 的,去掉也没什么关系。

  2. 勤快一点就留着_Nullable关键字,然后把报 warning 的每个属性和参数都加上_Nonnull_Nullable_Null_unspecified
    注意像你说的『全部加上__nonnull 就好了』这样是不安全的,最好是根据这个属性到底有没有可能是 null 再选择加 nonnull 还是 nullable,没时间一个一个看的话,也应该全加_Null_unspecified,不能全加__nonnull rrreee

    解決就兩種方法:
    去掉_Nullable關鍵字。反正預設就是 nullable 的,去掉也沒關係。 #🎜🎜##🎜🎜#
  3. #🎜🎜#勤快一點就留著_Nullable關鍵字,然後把報warning 的每個屬性和參數都加上_Nonnull_Nullable和_Null_unspecified
    注意像你說的『全部加上__nonnull 就好了』這樣是不安全的,最好是根據這個屬性到底有沒有可能是null 再選擇加nonnull 還是nullable,沒時間一個一個看的話,也應該全加_Null_unspecified,不能全加__nonnull。 #🎜🎜##🎜🎜# #🎜🎜#
Ty80

這個是xcode6.3的版本添加的新的特性,你只要使用了這個屬性就代表該類別中變數跟方法的參數得考慮全部得要設定該屬性

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板