2012-01-23 9 views
5

私は既にプロトコルを作成する方法を知っていますが、UIAppearanceプロトコルと特定のUIクラスの実装でAppleのようなプロキシプロトコルを作成するのがベストプラクティスであると思います。UIAppearanceのようなプロキシプロトコルを作成する方法

なぜこのようにしたいのですか?私はすでにUIクラスをたくさん持っているので、色を変更するためのコードの実装を集中化したいと思います。

多分奇妙な質問ですが、私の好奇心が私をこの点まで追いやってくれました。

おかげ

答えて

11

ただ、プロキシ静的オブジェクト作成し、クラスレベルのメソッド、あなたがシングルトンを実装していたものと同じ方法で、例えば介してアクセス

@implementation MyClass 

+ (MyProxyObject *)proxy 
{ 
    static MyProxyObject *sharedProxy = nil; 
    if (sharedProxy == nil) 
    { 
     sharedProxy = [[MyProxyObject alloc] init]; 
    } 
    return sharedProxy; 
} 

@end 

次に、あなたのクラスの任意のプロパティ(例: textColor、独自の値を格納するのではなく、クラスに[[self class] proxy] .textColorの値を使用させるだけです。例えば。

@interface MyClass : UIView 

@property (nonatomic, strong) textColor 

@end 

@implementation MyClass 

- (UIColor *)textColor 
{ 
    return textColor ?: [[self class] proxy].textColor 
} 

@end 

プロキシのプロパティが変更されるたびにすぐに画面上のビューを更新する方法が必要な場合は、プロキシを持つことによって、そのの、textColorセッターメソッドでNSNotificationを放送することを行うには、すべてのインスタンスが観察するかもしれませんその通知とそれを受け取ったときにsetNeedsDisplayを呼び出します。

+0

ありがとう@Nick、それは素晴らしいです!私はあなたの推薦に従うつもりです。 –

+0

お元気ですか?あなたのために働かなかったのですか? –

+0

実際にはありましたが、エラーでクリックします。申し訳ありませんニック再度受け入れます。 –

関連する問題