Рассмотрим этот подход,
static NSMutableDictionary *navigationBarImages()
{
static NSMutableDictionary *dict = NULL;
if(dict == NULL)
{
dict = [[NSMutableDictionary alloc] init];
}
return [[dict retain] autorelease];
}
затем всякий раз, когда вы используете navigationBarImages , замените его на navigationBarImages () , например:
изменение
NSString *imageName=[navigationBarImages objectForKey:self];
до
NSString *imageName=[navigationBarImages() objectForKey:self];
Если вас беспокоят вызовы функций, возможно, используйте временную переменную, чтобы перехватить возвращение navigationBarImages (),
NSMutableDictionary *dict = navigationBarImages();
[dict doSomething];
[dict doSomething];
Недостатком является то, что если вы вызвали navigationBarImages (), экземпляр NSMutableDictionary был создан, то он никогда не получит шанс на освобождение до конца программы.