2012-01-23 21 views
5

Bir protokolün nasıl oluşturulduğunu biliyorum ancak Apple'ın UIAppearance protokolü ve belirli UI sınıfları üzerinde gerçekleştirdiği gibi bir proxy protokolü oluşturmak için en iyi uygulamanın ne olacağını merak ediyorum.UIAppearance gibi bir proxy protokolü nasıl oluşturulur

Neden bu şekilde yapmak isterim? Zaten çok sayıda UI sınıfım var ve ben renk değiştirmeye yönelik kodun uygulanmasını merkezileştirmek istiyorum.

Belki garip bir soru ama merakım beni bu noktaya kadar sürükledi.

Teşekkür

cevap

11

Sadece vekil statik nesne yapmak ve sınıf düzeyindeki yöntemleri Eğer a tek uygulamak istiyorum aynı şekilde, örneğin üzerinden erişebilecek Sınıfınızın herhangi bir özelliği için, ör. textColor, sadece kendi değerini saklamak yerine sınıfınızı [[self class] proxy] .textColor'daki değeri kullanın. Örneğin.

@interface MyClass : UIView 

@property (nonatomic, strong) textColor 

@end 

@implementation MyClass 

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

@end 

Proxy üzerinde bir mülkiyet değiştiğinde hemen ekrandaki görüşlerini yenilemek için bir yol gerekiyorsa, vekil alarak textColor kurucu metod bir NSNotification yayın yapmak ve tüm örnekler gözlemlemek olabilir Bu bildirim ve çağrı setNeedsGörüntü aldıklarında kendileri.

+0

Teşekkürler @Nick, çok parlak! Tavsiyeni takip edeceğim. –

+0

Hey, neden kabul etmedin? Senin için işe yaramadı mı? –

+0

Aslında yaptı, ancak yanlışlıkla tıkladım. Üzgünüm Nick. Tekrar kabul edildi. –

İlgili konular