我用4.0 sdk开始iphone开发.我想让我的应用程序与3.2兼容.我意识到 - [UIWindow setRootViewController:]被添加到版本4.0中的sdk.所以我应该在4.0之前的版本中使用什么呢?换句话说,除了分配窗口的主要子视图外,rootViewController属性本质上做什么?如果我扩展UIWindow并重新定义下面的方法,将来会出现问题吗?
- (void) setRootViewController:(UIViewController *)controller
{
if (systemVersion < 4.0)
{
while(self.subviews.count > 0)
[[self.subviews objectAtIndex:0] removeFromSuperview];
[self addSubview:controller.view];
}
else [super setRootViewController:controller];
}
Run Code Online (Sandbox Code Playgroud) 我受到设计问题的挑战,我将在下面介绍.
假设一个类(称为A)具有带有一堆参数的构造函数.由于在每个实例化中编写所有这些参数都很累,所以我编写了另一个类,称之为StyleSheetA,它封装了所有这些参数,并且是A构造函数的唯一参数.这样,我可以准备一些默认值StyleSheetA模板稍后将使用,如果需要,我可以修改它们.
在这一点上,我需要扩展A.假设B扩展A. B将有自己的样式表,即StyleSheetB.我认为StyleSheetB扩展StyleSheetA是合适的,所以使用一个样式表参数,B的构造函数也可以构造它的超类A.但是我担心这个设计可能有缺陷的可能性.例如,如果我决定为样式表添加getter/setter,该怎么办?是否有一种新颖的方式来处理所有这些情况?我错了吗?对于那些困惑的人,我在这里附上一些代码:
class A
{
StyleSheetA ss;
A(StyleSheetA ss)
{
this.ss = ss;
// Do some stuff with ingredients of styleSheet
}
}
class StyleSheetA
{
int n1;
int n2;
// :
// :
int n100;
}
class B extends A
{
B(StyleSheetB ss)
{
super(ss);
// Do some stuff with ingredients of styleSheet
}
}
class StyleSheetB extends StyleSheetA
{
int n101;
int n102;
// :
// :
int n200;
}
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助或建议,也欢迎任何评论家.
编辑:我正在使用java开发,因此没有泛型支持.