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