HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – 如何创建像UIAppearance这样的代理协议大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道如何创建一个协议,但我想知道创建一个代理协议的最佳做法是什么,就像Apple为UIAppearance协议和某些UI类的实现所做的那样.

为什么我想这样做?因为我已经有很多UI类,我想集中实现代码的改变颜色.

也许是一个奇怪的问题,但我的好奇心驱使我到了这一步.

谢谢

解决方法

只需使代理成为静态对象并通过类级方法访问它,就像实现单例一样,例如

@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 setter方法中广播Nsnotification,让所有实例观察该通知调用setNeedsDisplay来实现.当他们收到它.

大佬总结

以上是大佬教程为你收集整理的iphone – 如何创建像UIAppearance这样的代理协议全部内容,希望文章能够帮你解决iphone – 如何创建像UIAppearance这样的代理协议所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。