ios - 使用typedef 属性出现Pointer is missing a nullability type specific 的警告
PHPz
PHPz 2017-04-17 17:30:11
0
2
833
  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
使用这个只能消除属性警告

PHPz
PHPz

学习是最好的投资!

全員に返信(2)
巴扎黑

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

リーリー

解決策は 2 つあります:

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

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

いいねを押す +0
Ty80

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!