iOS メソッド呼び出しの制限(__attribute__)

昨日Singletonの作成方法 を調べていた際に
attribute directiveを使った メソッド呼び出しを制限する方法を紹介している記事がありました。

- (instancetype)init __attribute__((unavailable("use sharedInstance")));

こんな感じ

warningにしてくれます。
f:id:rochefort:20140425022219p:plain
このケースではあんまり有効ではありませんが
deprecate メソッド用にだとか結構使える気がします。
他にも色々用意されているようなので、またあとで見てみます。

See Also:

Clang Language Extensions — Clang 3.5 documentation
A Better Singleton in Objective-C | James Schmidt (@schmij)
iOS Singletonクラスの作成方法 - rochefort's blog