gpt4 book ai didi

ios - View 作为模型对象替代的属性

转载 作者:行者123 更新时间:2023-11-29 03:55:53 27 4
gpt4 key购买 nike

我正在构建一个算术应用程序,其中有用于数字和数字的 NSObject 子类。这两个都有相应的 View 对象,它们采用数据源(数字或数字)和委托(delegate), View Controller 。

我发现它对于让 View 和模型协同工作以将数字 View 设置为其相应数字的属性非常有用。

例如,Number 类有一个 NSMutableArray 属性来保存其数字。

如果我想找到对应的NumberView的大小,我可以在 Controller 中编写这样的代码:

-(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);
}

代码工作得很好,但我觉得将指针指向模型中的 View 并不是一个好的做法,即使模型本身没有使用它。

如果这是不好的做法,那么潜在的陷阱是什么,是否有更好的方法来实现这种类型的目的?

最佳答案

第一:你是对的。这不是一个好的设计。

第二:计算模型内数字 View 的大小。但数字 View 本身应该知道它的大小。它通过其数据源知道该数字并可以获得数字。因此它具有计算其大小的所有信息。

为了说明这个问题,想象一下(即使这种情况在 iOS 上并不常见),您在两个地方显示相同的数字(= 不同的数字 View )。这会破坏你的模型。为什么?

解决方案:将与图形状态(绘图、尺寸等)相关的所有代码放入数字 View 和数字 View 中。一半的路程将需要额外的工作。但最终,当每个代码都迁移到 View 层时,就像在模型内部计算一样简单。

关于ios - View 作为模型对象替代的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com