2012-05-11 9 views
2

AwesomeClassがあるとしますが、その実装を変更できません(つまり、静的ライブラリまたはフレームワークから)。私はについてはすべて- (void)thatOneBadMethodを除いて好きです。 AwesomeClassをサブクラス化してMyAwesomeClassとし、そのメソッドを空の実装(superを呼び出さない)でオーバーライドすることはできますが、私の同僚の開発者がMyAwesomeClassを使用していて、何かをしていると思うかもしれませんそうではない。Objective-Cクラス/オブジェクトで特定のメソッドを使用するとコンパイルエラーが発生する

thatOneBadMethodのオーバーライドに入れることができるプリプロセッサディレクティブがあるので、コンパイラのエラーや警告を使用しようとすると、

答えて

3

あなたはヘッダファイルにメソッドをdeprecateことができます。

-(void)thatOneBadMethod __attribute__ ((deprecated("Unsupported, please call 'thatOneGoodMethod' instead!"))); 

しかし、私はまた、人々はそれを呼び出すしようとすると、エラーが発生勧めしたい:

-(void)thatOneBadMethod { 
    NSAssert(NO, @"Unsupported, please call 'thatOneGoodMethod' instead!"); 
} 
+1

のhttp://clang.llvm .org/docs/LanguageExtensions.html#deprecated –

+0

@robmayoff:リンクのおかげで、私は答えに入れました... –

+0

両方のヒントをありがとう。私は 'NSAssert'ルートは考えていませんでしたが、私は非推奨のアプローチが好きです。 –

関連する問題