Maison > Questions et réponses > le corps du texte
描述你的问题
Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)
警告如上
程序运行正常,全部加上__nonnull 就好了,为什么?
贴上相关代码
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文件
贴上相关截图
已经尝试过哪些方法仍然没解决(附上相关链接)
//NS_ASSUME_NONNULL_BEGIN
//NS_ASSUME_NONNULL_END
使用这个只能消除属性警告
巴扎黑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 :
Supprimez le mot-clé _Nullable
. Quoi qu’il en soit, la valeur par défaut est nullable, donc peu importe si vous la supprimez.
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
.
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