Xcode 7.0 GM で「’-init’ not found」と警告が出力された場合の対処方法

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__ディレクティブを使ってみる

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です