検索

ホームページ  >  に質問  >  本文

ios - 使用typedef 属性出现Pointer is missing a nullability type specific 的警告

  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
使用这个只能消除属性警告

PHPzPHPz2887日前883

全員に返信(2)返信します

  • 巴扎黑

    巴扎黑2017-04-17 17:32:11

    これは typedef の問題ではなく、定義したブロックに _Nullable キーワードが含まれているためです。これを削除すると、警告は報告されません:

    リーリー

    解決策は 2 つあります:

    1. _Nullable キーワードを削除します。いずれにせよ、デフォルトは null 可能であるため、削除しても問題ありません。

    2. 注意して _Nullable キーワードを保持し、警告を報告する各属性とパラメーターに _Nonnull_Nullable、および _Null_unspecified を追加します。
      あなたが言ったように、すべてに __nonnull を追加するのは安全ではないことに注意してください。属性を確認する時間がない場合は、属性が null である可能性が高いかどうかに基づいて、非 null を追加するか nullable を追加するかを選択するのが最善です。すべての _Null_unspecified ではなく、すべての __nonnull を 1 つずつ追加する必要があります。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:32:11

    これは、xcode6.3 バージョンで追加された新機能です。この属性を使用する限り、クラス内の変数とメソッドのすべてのパラメーターが考慮され、この属性が設定される必要があることを意味します。

    返事
    0
  • キャンセル返事