2012-02-10 6 views
1

いくつかの方法を許可しません。例えばフレームワークからいくつかのメソッドを禁止する簡単な方法はありますか?

+ (MPMusicPlayerController*)iPodMusicPlayer 

ので、私はそうしてみました:

@interface MPMusicPlayerController (Disallowed) 
// do never this method cause issues #957 #632 #1463 
// read #632 description to detail analysis why code should never use this method while 
// applicationMusicPlayer is used 
+ (MPMusicPlayerController*)iPodMusicPlayer __attribute__((unavailable)); 
+ (MPMusicPlayerController*)iPodMusicPlayer __attribute__((deprecated)); 
@end 

が、コードの下には、任意の考えは何の警告

MPMusicPlayerController * curPlayer = [MPMusicPlayerController iPodMusicPlayer]; 

せずに、とにかくコンパイル?

+0

これが問題の適切な解決策である状況を想像するのは難しいです。 – UIAdam

答えて

2

コンパイル時間のソリューション:

一つの方法は、単に次のコードを使用します。

#pragma GCC poison iPodMusicPlayer 

私が言及する必要がありますSDK61とSDK7でき含まれていない '毒' セレクタ ':' を原因:llvm bug :(

別の方法:

1

あなたはMPMusicPlayerControllerでカテゴリを作成することができます。 Override(MPMusicPlayerController + Override)をオーバーライドしてから、iPodMusicPlayerクラスのメソッドをオーバーライドしてnilを返します。 MPMusicPlayerController + Override.hを必ず#includeしてください。

あなたはそれを使用していない人を思い出させるためにあなたの方法に警告マークを追加することができます。

#warning Disabled method - do not use. 

それはあなたのために働く場合は私に知らせてください。

ダミアン

+0

ありがとうございます。このメソッドは実行時の解決策です。しかし、コンパイル時の解決策は優勢です。 – Speakus

関連する問題