Ios 重写NSMutableArray中的值

Ios 重写NSMutableArray中的值,ios,objective-c,nsmutablearray,Ios,Objective C,Nsmutablearray,我有一个应用程序,允许用户在英语和威尔士语之间更改某些内容的语言。以下内容用于填充名为注释的NSMutableArray。第一次使用代码时,它可以正常工作,但是如果随后更改了语言,注释数组将不会加载不同的注释集。我怀疑每次访问代码时都需要清除NSMutableArray。首先,情况是否如此?如果是这样,如果comments=nil不这样做,我该怎么做 + (NSMutableArray *)comments { static NSMutableArray *comments = nil; sta

我有一个应用程序,允许用户在英语和威尔士语之间更改某些内容的语言。以下内容用于填充名为注释的
NSMutableArray
。第一次使用代码时,它可以正常工作,但是如果随后更改了语言,注释数组将不会加载不同的注释集。我怀疑每次访问代码时都需要清除
NSMutableArray
。首先,情况是否如此?如果是这样,如果comments=nil不这样做,我该怎么做

+ (NSMutableArray *)comments {
static NSMutableArray *comments = nil;
static dispatch_once_t onceToken;

if ([language isEqualToString: @"Eng"])
{
dispatch_once(&onceToken, ^{
comments = [NSMutableArray arrayWithObjects:
               @"Eng1",
               @"Eng2",
               @"Eng3",
               nil];
    });
}

if ([language isEqualToString: @"Wel"])
{
dispatch_once(&onceToken, ^{
comments = [NSMutableArray arrayWithObjects:
                @"Welsh 1",
                @"Welsh 2",
                @"Welsh 3",
                nil];
    });
}

return comments;
}
}

dispatch\u once
使块在整个应用程序的生命周期内执行一次ever

相反,您可能只想做一个简单的
nil
检查

static NSMutableArray *comments = nil;
+ (NSMutableArray *)comments {
  if (!comments)
  {
    if ([language isEqualToString: @"Eng"])
    {
      comments = [NSMutableArray arrayWithObjects:
                  @"Eng1",
                  @"Eng2",
                  @"Eng3",
                  nil];
    }
    else if ([language isEqualToString: @"Wel"])
    {
      comments = [NSMutableArray arrayWithObjects:
                  @"Welsh 1",
                  @"Welsh 2",
                  @"Welsh 3",
                  nil];
    }
  }
  return comments;
}

+ (void)changeLanguage:(NSString *)newLanguage {
  language = newLanguage;
  comments = nil;
}