我正在构建一个算术应用程序&在其中有数字和数字NSObject
的子类。其中有两个对应的视图对象,它们采用数据源(数字或数字)和委托,视图控制器。
我发现它在获取视图和视图方面非常有用。模型一起工作以将数字视图设置为其相应数字的属性。
例如,Number类有一个NSMutableArray
属性,用于保存其数字。
如果我想找到相应NumberView的大小,我写的可以在控制器中编写这样的代码:
-(void) updateNumberViewFrameSize:(ACNumberView*) sender
{
NSUInteger i;
float width = 0, height = 0;
for (ACDigit* digit in [sender.dataSource returnNumberViewDataSource].digitArray)
{
width += digit.digitView.size.width;
height += digit.digitView.size.width;
}
sender.frame = CGRectMake(sender.frame.origin.x, sender.frame.origin.y, width, height);
}
代码工作正常,但我觉得将指针指向模型的视图并不好,即使模型本身没有使用它。
如果这是不好的做法,有哪些潜在的陷阱,是否有更好的方法来实现这种类型的结束?
答案 0 :(得分:1)
第一:你是对的。这不是一个好的设计。
第二:计算模型内部数字视图的大小。但是一些观点应该知道它的大小本身。它通过数据源知道数字,并可以获取数字。所以它有计算其大小的所有信息。
要显示问题,想象一下(即使这种情况在iOS上并不常见),您在两个地方显示相同的数字(=与不同的数字视图)。这会破坏您的模型。为什么呢?
解决方案:将与图形状态(图形,尺寸,...)相关的所有代码放入数字视图和数字视图中。一半的方式将是额外的工作。但最后,当每个代码都迁移到视图层时,就像在模型中计算它一样简单。