重写 NSMutableArray 中的值
Rewriting the values in NSMutableArray
我有一个应用允许用户在英语和威尔士语之间更改某些内容的语言。以下用于填充名为 comments 的 NSMutableArray
。第一次使用代码时它工作正常,但如果随后更改语言,comments 数组将不会加载不同的注释集。我怀疑我需要在每次访问代码时清除 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_once
使块在整个应用程序的生命周期内永远 执行一次。
相反,您可能只想做一个简单的 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;
}
我有一个应用允许用户在英语和威尔士语之间更改某些内容的语言。以下用于填充名为 comments 的 NSMutableArray
。第一次使用代码时它工作正常,但如果随后更改语言,comments 数组将不会加载不同的注释集。我怀疑我需要在每次访问代码时清除 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_once
使块在整个应用程序的生命周期内永远 执行一次。
相反,您可能只想做一个简单的 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;
}