cari

Rumah  >  Soal Jawab  >  teks badan

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 hari yang lalu879

membalas semua(2)saya akan balas

  • 巴扎黑

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

    Ini bukan masalah dengan typedef, ini kerana kata kunci _Nullable muncul dalam blok yang anda tetapkan. Jika anda mengalih keluarnya, amaran tidak akan dilaporkan:

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

    Terdapat dua penyelesaian:

    1. Alih keluar kata kunci _Nullable. Bagaimanapun, lalainya boleh dibatalkan, jadi tidak mengapa jika anda mengalih keluarnya.

    2. Tekun dan simpan kata kunci _Nullable, kemudian tambahkan _Nonnull, _Nullable dan _Null_unspecified pada setiap atribut dan parameter yang melaporkan amaran.
      Ambil perhatian bahawa adalah tidak selamat untuk menambah __nonnull pada semua seperti yang anda katakan. Sebaik-baiknya anda memilih sama ada untuk menambah nonnull atau nullable berdasarkan sama ada atribut itu berkemungkinan tidak mempunyai masa untuk melihatnya satu demi satu, Anda juga harus menambah semua _Null_unspecified, bukan semua __nonnull.

    balas
    0
  • PHP中文网

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

    Ini ialah ciri baharu yang ditambahkan dalam versi xcode6.3 Selagi anda menggunakan atribut ini, ini bermakna semua parameter pembolehubah dan kaedah dalam kelas mesti dipertimbangkan dan atribut ini mesti ditetapkan

    .

    balas
    0
  • Batalbalas