我有一个UIView我需要访问我的应用程序周围的属性。我知道你不能在UIView对象周围创建一个Singleton,那么什么可能是做类似的好方法呢?
E.g。该视图有一个标签。从我的应用程序中的任何视图控制器,我希望能够更改此视图的文本(坐在父视图控制器中)。
感谢。
编辑:
成功!使用KVO跟踪我的Singleton对象中的变化是一种魅力,也是一种非常简单的解决方案。
答案 0 :(得分:11)
我认为你要做的事情违反了MVC模式的关注点分离:唯一应该与视图交互的是它的控制器。在您的情况下,您可能应该创建一个由视图控制器监视的模型(可能通过key–value observing),然后控制器可以将必要的更改传播到您的视图。
答案 1 :(得分:0)
如果你知道(读:你现在真的知道并且永远都知道!)那个视图最多会有一个实例在一个时间点存活,你可以使用一个全局变量来存储它。或者在该视图上使用类属性 - 尽可能接近单例。
或者您可能只是修复您的设计,在我记忆中的每种情况下,这已被证明是更好的选择。 :)只需在您的类中添加一些前向和后向引用(并坚持MVC原则)。实施那些担心这些尴尬的解决方法所花费的时间要少得多,并且它将比较晚支付费用。