UIKit参考文档称UIView是UIWindow的超类,但尽管如此,UIWindow实际上管理UIView。这对我来说听起来很不寻常。
有人知道这在软件设计方面的意义吗?
非常感谢。
编辑:
我读了iPhone编程指南中相关的段落。然而,我无法看出为什么他们要反过来:让UIWindow成为UIView的父类。一定有一些东西迫使苹果以这种方式设计类层次结构。
UIKit参考文档称UIView是UIWindow的超类,但尽管如此,UIWindow实际上管理UIView。这对我来说听起来很不寻常。
有人知道这在软件设计方面的意义吗?
非常感谢。
编辑:
我读了iPhone编程指南中相关的段落。然而,我无法看出为什么他们要反过来:让UIWindow成为UIView的父类。一定有一些东西迫使苹果以这种方式设计类层次结构。
每个常规的UIView,包括主窗口的根视图,都应该有一个父视图。UIWindow继承自UIView,在视图层次结构中执行父视图的职责。 UIWindow不是常规视图,并且具有从UIView接口实现方法的自己的实现。
因为每个UIView都会继承只对窗口有意义的属性和行为,这是错误的。
相反的方式更有意义:窗口在视图上添加行为。所以它可以绘制、有边界、包含其他视图等等。但它通过知道如何渲染到显示器等方面进行了扩展。
在MacOS X中,NSWindows不是视图。它们包含一个名为contentView的“根视图”。iOS窗口是NSWindow +其根视图的组合。