类之间共享的NSDictionary数据

时间:2014-12-05 19:39:18

标签: objective-c nsdictionary

我正在创建一个OS X应用程序,允许用户弹钢琴(使用MIDI键盘)。音符将从左向右滚动,由用户在正确的时间播放正确的音符,有点类似于摇滚乐队或任何其他游戏。将滚动的音符将从文本文件或某种输入源生成,它可能如下所示:

C4 D4 B3 A3 C4 ...

我正在为音乐笔记创建一个字典。在音乐中,有12个独特的值,所以我们只说有12种独特的字母类型。 “C”的值为0,“C#”为1,“D”为2,等等。我需要以这种方式编写它们,因为用户将要播放的MIDI数据是以数字方式生成的。 “C”将始终为0,因此需要对此数据进行硬编码。在多个类之间共享此字典的最佳实践是什么,以便该类的每个实例也可以访问它?

1 个答案:

答案 0 :(得分:1)

  

在多个类之间共享此字典的最佳做法是什么,以便该类的每个实例也可以访问它?

在类的+initialize方法中创建字典,并将指针存储在静态(文件范围)变量中。在创建类的任何实例之前调用+initialize,因此它是一个很好的地方,可以独立于特定对象执行类所需的任何设置。

static NSDictionary *notesDict;

@implementation SomeClass

+ (void)initialize
{
    notesDict = @{@"C" : @0, @"C#" : @1, @"D" : @2};
}

+ (NSDictionary*)notes
{
    return notesDict;
}

//...

@end

如果有必要,+notes访问者可以轻松地从其他类访问字典。