Это работа для статического ключевого слова.Если вы сделаете это:
static NSDictionary *pointDictionary = nil
if (pointDictionary==nil) {
NSString *pointPath = [[NSBundle mainBundle] pathForResource:@"pointvalues" ofType:@"plist"];
pointDictionary = [[NSDictionary alloc] initWithContentsOfFile:pointPath];
}
pointDictionary
будет постоянным в течение всего времени жизни вашего приложения.
Еще одна оптимизация - создать кеш баллов, используя это для каждогоwords:
[dict setObject:[NSNumber numberWithInt:[word calculateWordValue:word]] forKey:word];
Затем используйте метод keysSortedByValueUsingSelector:
для извлечения списка слов (обратите внимание, что селектор должен сравниваться:, поскольку сравниваемые объекты являются номерами NSN)., аргумент слова в вашем методе является избыточным.Вместо этого используйте self:
-(int)calculateWordValue {
...
for (int index = 0; index < [self length]; index++)
{
char currentChar = [self characterAtIndex:index];
...
}
...
}