recherche

Maison  >  Questions et réponses  >  le corps du texte

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 Il y a quelques jours878

répondre à tous(2)je répondrai

  • 巴扎黑

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

    Ce n'est pas un problème avec typedef, c'est parce que le mot-clé _Nullable apparaît dans le bloc que vous avez défini. Si vous le supprimez, l'avertissement ne sera pas signalé :

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

    Il existe deux solutions :

    1. Supprimez le mot-clé _Nullable. Quoi qu’il en soit, la valeur par défaut est nullable, donc peu importe si vous la supprimez.

    2. Soyez diligent et conservez le mot-clé _Nullable, puis ajoutez _Nonnull, _Nullable et _Null_unspecified à chaque attribut et paramètre qui signale un avertissement.
      Notez qu'il est dangereux d'ajouter __nonnull à tout comme vous l'avez dit. Il est préférable de choisir d'ajouter nonnull ou nullable en fonction de la probabilité que l'attribut soit nul si vous n'avez pas le temps de les examiner. un par un, vous devez également ajouter tous les _Null_unspecified, pas tous les __nonnull.

    répondre
    0
  • PHP中文网

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

    Il s'agit d'une nouvelle fonctionnalité ajoutée dans la version xcode6.3 Tant que vous utilisez cet attribut, cela signifie que tous les paramètres des variables et méthodes de la classe doivent être pris en compte et cet attribut doit être défini

    répondre
    0
  • Annulerrépondre