美文网首页
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