私はプロトコルを定義して、そのプロトコルのシングルトンスタイルの「デフォルト」共有実装を取得する簡単で標準的な方法を作成したいと考えています。次のパターンにココアが付着さん: Cocoaシングルトンとプロトコル
[NSUserDefaults standardUserDefaults]
[NSNotificationCenter defaultCenter]
が、両方のケースで
、彼らはオブジェクト階層の最下部には@interfaceを持っています。 @protocolsを使ってこれを行う方法に苦労しています。私は明らかに空または単純なメソッドの実装を持つクラスを作成することができます - しかし、実際には、私が望むものは、階層の最下部に@プロトコルです。私のような何か試してみた:@protocol ConfigurationManager <NSObject>
//...
@interface ConfigurationManagerFactory : NSObject
+ (id<ConfigurationManager>)sharedConfiguration;
@end
// ...
id<ConfigurationManger> config = [ConfigurationManagerFactory sharedConfiguration];
[config ...];
をし、それが動作します - しかし、私はいつもこれを使用する方法を説明した、なぜ私はこのようにそれをやったんです。 @protocolsの価値を引き続き活用しながら、Cocoaの構文(呼び出し規約)に準拠する方法はありますか?
私はこのような@protocolsを使用したくない理由は何ですか?実装している@interfaceは、NSStringを拡張してNSStringを拡張するクラスを通常どのようにインスタンス化するかのように、カテゴリや代替実装などを活用することができます。
ああ - 私は名前の衝突を作成すると思った!私はそれが私が必要としているものだと思う! TY。 –