NSObject を継承したクラスを使用していて,以下のメッセージが出力された.
Method override for the designated initializer of the superclass '-init' not found
たしかに,継承したクラスでは,init をオーバーライドしていないが,所定のメソッド内で [super init] は行っている.
この警告に対処するには,いくつかの方法があると思うが,今回は以下の方法で対処した.
間違って [foo alloc] init]; した場合,コンパイルエラーとすることができる.
- (id)init __attribute__((unavailable("init is not available.")));
unavailable: 指定OSプラットフォームでメソッドが使えないことを示す.
【参考】
objcでinitの呼び出しを抑制するAdd Star
[Objective-C]__attribute__ディレクティブを使ってみる