Ios 传递给方法并使用返回的NSString对象时NSString操作(内存管理)的正确方式

Ios 传递给方法并使用返回的NSString对象时NSString操作(内存管理)的正确方式,ios,ipad,memory-management,memory-leaks,nsstring,Ios,Ipad,Memory Management,Memory Leaks,Nsstring,我有一个singleton类,它有一个用于字符串操作的可重用代码,有时会泄漏内存 -(NSString *)getLocalizedString:(NSString *)key { @autoreleasepool { FMDatabase *db=[FMDatabase databaseWithPath:databasePath]; [db open]; // NSString *uppercaseValue=[key uppercaseString];

我有一个singleton类,它有一个用于字符串操作的可重用代码,有时会泄漏内存

-(NSString *)getLocalizedString:(NSString *)key
{
@autoreleasepool
{
    FMDatabase *db=[FMDatabase databaseWithPath:databasePath];
    [db open];
//        NSString *uppercaseValue=[key uppercaseString];
    NSString *uppercaseValue = [[NSString alloc] initWithString:[key uppercaseString]];
    NSString *slashRemoved=[uppercaseValue stringByReplacingOccurrencesOfString:@"/" withString:@" "];
    NSString *spaceRemoved=[slashRemoved stringByReplacingOccurrencesOfString:@" " withString:@"_"];
    NSString *dotRemoved=[spaceRemoved stringByReplacingOccurrencesOfString:@"." withString:@""];
    NSString *collanRemoved=[dotRemoved stringByReplacingOccurrencesOfString:@":" withString:@""];
    NSString *excalmaRemoved=[collanRemoved stringByReplacingOccurrencesOfString:@"!" withString:@""];
    NSString *commaRemoved=[excalmaRemoved stringByReplacingOccurrencesOfString:@"," withString:@""];
    NSString *webaddressRemoved=[commaRemoved stringByReplacingOccurrencesOfString:@"ABCCOM" withString:@"ABC.COM"];
    NSString *value=[db stringForQuery:@"select value from language where name=? AND key=?",[Utils getCurrentLanguage],webaddressRemoved];
    if(value==nil)
    {
        value=key;
    }
    return value;

}
}

用法:

NSString *textString = [[NSString alloc]initWithString:[langmodule getLocalizedString:[[arrSetting objectAtIndex:indexPath.row] objectForKey:@"name"]]];
   [cell.textLabel setText:textString];

[tip setTitle:[langmodule getLocalizedString:[[self.transactionSource objectAtIndex:indexPath.row] valueForKey:@"tip"]] forState:UIControlStateNormal];
*getLocalizedString方法有时会泄漏 NSString value=[db stringForQuery:@从语言中选择值,其中名称=?和键=?,[Utils getCurrentLanguage],webaddressRemoved]

我的+getCurrentLanguage方法如下所示:

+(NSString *)getCurrentLanguage
 {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [languages objectAtIndex:0];
if([currentLanguage isEqualToString:@"fr"])
{
    currentLanguage=@"french";
}
else if([currentLanguage isEqualToString:@"de"])
{
    currentLanguage=@"german";
}
else if([currentLanguage isEqualToString:@"ja"])
{
    currentLanguage=@"japanese";
}
else if([currentLanguage isEqualToString:@"es"])
{
    currentLanguage=@"spanish";
}
else if([currentLanguage isEqualToString:@"nl"])
{
    currentLanguage=@"dutch";
}
else if([currentLanguage isEqualToString:@"pt"])
{
    currentLanguage=@"portuguese";
}
else if([currentLanguage isEqualToString:@"zh-Hans"])
{
    currentLanguage=@"chinese";
}
else if([currentLanguage isEqualToString:@"ko"])
{
    currentLanguage=@"korean";
}
else if([currentLanguage isEqualToString:@"it"])
{
    currentLanguage=@"italian";
}
else {
    currentLanguage=@"english";
}

return currentLanguage;
}

我的GetLocalizationString是否正常,或者内存有问题。该项目正在进行中。
感谢并问候

在iphone中管理本地化,这是我发现的使用TSLanguageManager库的最佳方式,您可以从以下链接查看此链接:

感谢您的兴趣。我正在寻找解决方案而不是选项,我们不能,因为当前项目中存在很多依赖项,将关注它并在新项目中使用。可能是FMDatabase有漏洞?你查过了吗?