+ (NSString *)getValueforLocale:(NSString*) i18nkey :(NSString*)locale{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSLog(@"paths are : %@",paths);
NSString *libraryDirectory = [paths objectAtIndex:0];
NSLog(@"libraryDirectory : %@",libraryDirectory);
NSString *filePath = [libraryDirectory stringByAppendingPathComponent:@"I8nDB"];
filePath = [filePath stringByAppendingPathComponent:locale];
NSLog(@"file path is : %@",filePath);
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
if(fileExists)
{
NSDictionary *dict = [[[NSDictionary alloc] initWithContentsOfFile:filePath]autorelease];
NSDictionary *resourceBundle = [[[NSDictionary alloc] init]autorelease];
NSString *keyValue = [[[NSString alloc]init]autorelease];
resourceBundle = [dict valueForKey:@"hash"];
keyValue=[resourceBundle valueForKey:i18nkey];
NSLog(@"value for %@ is(container) : %@",i18nkey,keyValue);
if(keyValue != nil || keyValue != NULL)
{
return keyValue;
}
else
{
NSLog(@"key not found in the container file");
NSString *path = [[NSBundle mainBundle] pathForResource:@"Localizable"
ofType:@"strings"
inDirectory:nil
forLocalization:locale];
NSLog(@"path for %@ is : %@",locale,path);
fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];
if(fileExists)
{
NSDictionary *dict = [[NSDictionary dictionaryWithContentsOfFile:path]autorelease];
NSLog(@"value for %@ is(resources) : %@",i18nkey,[dict objectForKey:i18nkey]);
return [dict objectForKey:i18nkey];
}
else
{
return NULL;
}
}
}
else
{
NSLog(@"%@ locale does not exist in container",locale);
NSString *path = [[NSBundle mainBundle] pathForResource:@"Localizable"
ofType:@"strings"
inDirectory:nil
forLocalization:locale];
NSLog(@"path for %@ in resources is : %@",locale,path);
fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];
if(fileExists)
{
NSDictionary *dict = [[NSDictionary dictionaryWithContentsOfFile:path]autorelease];
NSLog(@"value for %@ is : %@",i18nkey,[dict objectForKey:i18nkey]);
return [dict objectForKey:i18nkey];
}
else
{
return NULL;
}
}
}
如果我们从上面的代码中删除 Autorelease,如果不是应用程序崩溃,它在 iOS7 中工作
我主要担心的是为什么它不会在 iOS8 和 9 中崩溃,而只有在 iOS7 中的崩溃是与这些版本的自动发布相关的变化