描述你的问题
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
使用这个只能消除属性警告
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é :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
.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