【发布时间】:2014-12-05 19:39:18
【问题描述】:
我正在创建一个允许用户弹钢琴的 OS X 应用程序(使用 MIDI 键盘)。音符将从左到右滚动,由用户在正确的时间播放正确的音符,有点类似于摇滚乐队或任何其他游戏。将滚动的注释将从文本文件或某种输入源生成,它可能如下所示:
C4 D4 B3 A3 C4 ...
我正在为音乐笔记创建字典。在音乐中,有 12 种独特的值,所以我们只说有 12 种独特的字母类型。 “C”的值为 0,“C#”的值为 1,“D”的值为 2,等等。我需要以这种方式对它们进行编码,因为用户将要播放的 MIDI 数据是以数字形式生成的。 “C”将始终为 0,因此需要对这些数据进行硬编码。在多个类之间共享此字典以便该类的每个实例也可以访问它的最佳做法是什么?
【问题讨论】:
-
了解更多有关您计划如何在代码中使用此数据结构的信息会很有帮助。字典可能不是你最好的选择。一个枚举或只是一组常量可能会更好/更好。但从问题中很难判断。
-
抱歉信息不足...我会更新的。
-
简单地在类之间共享它。您使用指针寻址 NSDictionary,指针可以作为参数传递或存储在另一个类的属性中或从另一个类的属性中获取,因此很容易为同一个对象提供多个类的可寻址性。这不需要任何花哨的初始化方法或单例或任何东西,只需要合理地了解您的应用程序是如何工作的。
-
@HotLicks 我认为这根本不是同一个问题。它确实与对象之间的数据共享有关,但是:a)尚不清楚所讨论的对象是否是视图控制器,它们很容易成为模型对象或视图或其他东西; b) 有问题的数据是一个常量字典,用于将名称映射到值,因此一直将字典作为参数传递将是不必要的负担。