Ответ заключается в том, что исходная строка filePath выделена и должна быть освобождена, но когда у вас есть строка:
filePath = [filePath stringByAppendingString:@".png"];
, вы создаете другую строку - исходный указатель на filePath теперь исчез иэто утечка.
Вот код, который вы на самом деле хотите
NSString *filePath = self.gem.poiType;
filePath = [filePath stringByAppendingPathExtension:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile: filePath];
imageView.image = image;
[image release];
Так что вам не нужно освобождать filePath - он автоматически освобождается.Также у Apple есть специальный вызов для добавления расширений пути.
NSString *filePath = [self.gem.poiType stringByAppendingPathExtension:@"png"];
на самом деле большинство людей пишут этот код - на одну строку меньше.