zoukankan      html  css  js  c++  java
  • Pointer is missing a nullability type specifier (__nonnull or __nullable)

    我们都知道在swift中,可以使用!和?来表示一个对象是optional的还是non-optional,如view?和view!。而在Objective-C中则没有这一区分,view即可表示这个对象是optional,也可表示是non-optioanl。这样就会造成一个问题:在Swift与Objective-C混编时,Swift编译器并不知道一个Objective-C对象到底是optional还是non-optional,因此这种情况下编译器会隐式地将Objective-C的对象当成是non-optional。

    为了解决这个问题,苹果在Xcode 6.3引入了一个Objective-C的新特性:nullability annotations。这一新特性的核心是两个新的类型注释:__nullable__nonnull。从字面上我们可以猜到,__nullable表示对象可以是NULL或nil,而__nonnull表示对象不应该为空。当我们不遵循这一规则时,编译器就会给出警告。

     1 typedef enum : NSUInteger {
     2     LoadTypeNew, ///下拉刷新,加载最新数据的状态
     3     LoadTypeMore,  /// 上拉刷新,加载更多数据的状态
     4     LoadTypeSearch /// 控制器搜索数据的状态
     5 } LoadType;
     6 
     7 //这个block , 用来解决是不是已经把数据加载完成了(没有更多的数据了)
     8 typedef void(^SuccessWithLastBlock)(_Nonnull id success, BOOL last);
     9 
    10 //这个block , 用来解决请求数据出错的情况(包含error 信息 和服务器返回的错误信息,error为空 ,即为服务器错误)
    11 typedef void(^ErrorMsgBlock)( NSError * _Nullable error,id _Nullable msgBody);
    12 
    13 @interface QKYBasicDataController : NSObject
    14 
    15 
    16 @property (nonatomic,strong,nonnull)SuccessWithLastBlock successWithLastBlock; //默认的成功的回调
    17 @property (nonatomic,strong,nonnull)SuccessBlock successBlock; //默认的成功的回调
    18 @property (nonatomic,strong,nonnull)ErrorMsgBlock errorMsgBlock;  //默认的失败的回调
    19 
    20 
    21 // 传入交互的Block块,这个只是提供一般的例子,在具体的DataController中为了增加可读性,需要自定义
    22 -(void)requestDatasWithSusscessBlock: (_Nullable SuccessBlock ) successBlock ErrorMsgBlock:(_Nullable ErrorMsgBlock )errorMsgBlock;
    23 @end

    上边的代码是一个基础ViewModel的代码,在使用block的时候只要加上这两个属性 进行说明就不会有警告了

  • 相关阅读:
    Python+selenium常见报错
    jmeter压力测试指标解释
    jemte自动生成测试报告方法
    iview清空Date-picker组件后请求报错解决方法
    【求助】Django+vue项目时候遇到一个问题,table的data数据怎么更新
    django_数据库操作—增、删、改、查
    django-关于manage.py migrate无效的问题
    python家里的环境和公司环境怎么同步
    python class类的属性应用及init初始化实践 ---勇者斗恶龙
    IDLE与pycharm执行相同代码结果却不同,原因分析
  • 原文地址:https://www.cnblogs.com/machao/p/5159553.html
Copyright © 2011-2022 走看看