日々精進

新しく学んだことを書き留めていきます

呼び出し禁止メソッドを呼ぼうとするとコンパイルエラーにする

サブクラスでイニシャライザを実装する場合、
親クラスのイニシャライザを使用禁止にしたいことが多い。
普通は使用禁止にするメソッドを呼ぶと例外を出すようにすることが多いと思うが、以下のようにするとコンパイルエラーにすることができる。

- (instancetype)init __attribute__((unavailable("init is not available")));

これは便利。
参考:iOS - イニシャライザが守るべき3つのルール - Qiita