代码之家  ›  专栏  ›  技术社区  ›  ivanTheTerrible

核心数据+核心动画/Calayer在一起?

  •  1
  • ivanTheTerrible  · 技术社区  · 16 年前

    我正在制作一个带有自定义界面的Cocoa应用程序到目前为止,我已经实现了一个版本的应用程序,使用calayer进行渲染,考虑到calayers的层次结构和它的[hittest]处理鼠标事件的功能,这个版本非常棒。在这个早期版本中,应用程序的模型是我的自定义类。

    然而,随着程序的发展,我感到迫切需要为模型使用核心数据,这不仅仅是为了便于绑定/撤消管理,而且还想尝试新技术。

    我目前的方法是:

    核心数据:创建 阻塞 实体 ,与 属性 xPos,yPos,宽度,高度 ……等等。

    然后,创建 方块图:CALayer 用于绘图的类,它使用诸如 self.position.x=[self valueforkey:@“xpos”] 从模型中获取值。

    在这种情况下, 方块图 对象还必须保留 xPos公司 ,这不好。

    你们有更好的建议吗?

    编辑: 这个应用程序是一个信息可视化工具。因此,块的位置、尺寸是重要的,应该保留下来以便以后分析。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Peter Hosey    16 年前

    编辑和保存这些应用程序块的位置和大小是不是你的应用程序要完成的任务?

    如果没有,那么这些信息可能不应该出现在您的模型中。

        2
  •  1
  •   TechZen    16 年前

    使用核心数据存储图形对象的实际运行时位置不是一个好主意这样做会将数据模型直接与视图混合。这将使应用程序难以调试和维护,并将使其组件的可重用性大大降低。

    相反,您应该让核心数据在创建视图对象时向viewcontroller提供任何预先存在的位置数据,然后在处理完成时保存数据。

    理想情况下,无论您使用哪种持久性存储方法,视图都应该工作;无论用于显示数据的视图类型如何,持久性存储方法都应该工作例如,对于使用Webview的视图、使用核心动画甚至纯文本输出的视图,您应该能够使用相同的数据模型。

        3
  •  0
  •   lyonanderson    16 年前

    所以在您的实现中,每个blockview都有自己的x?

    为什么不让BlockView类保存对块的引用?

    视图可以用一个用来设置其位置的块来初始化。

    这在视图类和模型之间保持了良好的分离。