Basta fare il proxy un oggetto statico e accedervi attraverso metodi a livello di classe, nello stesso modo che ci si implementa un Singleton, per esempio
@implementation MyClass
+ (MyProxyObject *)proxy
{
static MyProxyObject *sharedProxy = nil;
if (sharedProxy == nil)
{
sharedProxy = [[MyProxyObject alloc] init];
}
return sharedProxy;
}
@end
Quindi, per qualsiasi proprietà della classe, ad es. textColor, basta che la classe utilizzi il valore in [[self class] proxy] .textColor invece di memorizzare il proprio valore. Per esempio.
@interface MyClass : UIView
@property (nonatomic, strong) textColor
@end
@implementation MyClass
- (UIColor *)textColor
{
return textColor ?: [[self class] proxy].textColor
}
@end
Se avete bisogno di un modo per rinfrescare le vostre opinioni sullo schermo immediatamente ogni volta che una proprietà sul proxy viene modificato, si potrebbe fare che avendo il proxy trasmesso un NSNotification nel suo metodo textColor setter, e hanno tutte le istanze osservano quella notifica e chiama setNeedsDisplay su se stesso quando lo ricevono.
fonte
2012-01-23 17:29:47
Grazie @Nick, è geniale !. Seguirò la tua raccomandazione. –
Ehi, perché non hai accettato? Non ha funzionato per te? –
In realtà lo ha fatto, ma lo clicco per errore. Scusa, Nick. Accettato di nuovo. –