我经常听说,以每个班级都知道其他班级的方式来组织班级是不好的。所以我试着让作为其他类属性的类不知道他们的父母。但是使用 UIView 我无法实现它。
这个问题来自更通用的背景,因为问题不仅发生在 UIViews 上。如果我有一辆汽车作为对象,有 4 个轮子作为 4 个实例变量,并且当左前轮爆裂时。左后轮应该会收到一条消息。我应该如何以一种好的方式设计系统?
Objective-C 中的 UIView 示例:我有一个自定义 UIView 填充整个屏幕。管理所有布局。假设只有 2 个子视图保持简单。
@interface BackgroundView : UIControllerView {
CustomViewA *buttonA;
CustomViewB *buttonB;
}
@end
@interface CustomViewA : UIButton
@interface CustomViewB : UIButton
现在如果有人按下按钮 A,按钮 B 应该做某事(例如变红)。我看到有几个选项:
- 将按钮 A 的委托设置为按钮 B,因此 A 的所有事件都转到 B 的实现文件。如果不是所有事件都与按钮 B 有关,则问题。
- 创建一个单例 BackgroundView 并让按钮 A 获取按钮 B 的属性或调用 BackgroundView 中的方法,该方法确实将我的调用转发到按钮 B。如果我想要多个背景,可以创建一个更高的类来拥有两个 BackgroundView (听起来不太好)。
- 调用为 UIViews 实现的父对象,然后像 2. 调用方法或直接更改它。不使用 UIView 时出现问题,将功能复制到其他“父”类?
有没有更好的方法来解决这样的问题?或者我可以大大优化一种方法吗?