美文网首页
NS_UNAVAILABLE 与 NS_DESIGNATED_I

NS_UNAVAILABLE 与 NS_DESIGNATED_I

作者: 纳兰沫 | 来源:发表于2020-04-30 11:35 被阅读0次

    NS_UNAVAILABLE 与 NS_DESIGNATED_INITIALIZER NS_REQUIRES_SUPER

    面对多个初始化方法 不知道哪个方法是正确的方法 这个时候 可以使用NS_UNAVAILABLE 与 NS_DESIGNATED_INITIALIZER来对初始化方法进行描述

    • NS_DESIGNATED_INITIALIZER
      当所有的初始化方法都走某个特定的初始化方法的时候 用NS_DESIGNATED_INITIALIZER来描述
    - (instancetype)initWithTitle:(NSString *)title date:(NSDate *)date NS_DESIGNATED_INITIALIZER;
    

    如果子类实现了NS_DESIGNATED_INITIALIZER描述的初始化方法 那么必须实现父类的NS_DESIGNATED_INITIALIZER方法

    • NS_UNAVAILABLE
      直接禁用初始化方法
      被NS_UNAVAILABLE修饰的初始化方法是不可以被调用的,调用会报错,但是可以被runtime调用
      还有以下跟NS_UNAVAILABLE方法类似
    // 作用与 NS_UNAVAILABLE 类似
    - (id) init __unavailable;
    - (id) init __attribute__((unavailable));
    - (id) init UNAVAILABLE_ATTRIBUTE;
    
    // 在调用时给出提示
    - (id) init __attribute__((unavailable("Must use initWithFoo: instead.")));
    
    • NS_REQUIRES_SUPER
      表示子类重写父类方法的时候,在内部必须super这个方法 如果不想调用 也不想出错
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
    方法实现
    #pragma clang diagnostic pop
    

    相关文章

      网友评论

          本文标题:NS_UNAVAILABLE 与 NS_DESIGNATED_I

          本文链接:https://www.haomeiwen.com/subject/yjaawhtx.html