Вы не показываете весь код, поэтому трудно сказать что-либо убедительное. Тем не менее:
NSString *path = [[[NSString init] alloc] autorelease];
path = [filePath copy];
не имеет смысла: сначала вы выделяете строку NSString, и пусть path
указывает на нее. Тогда вы позволите пути указать на что-то еще. Строка NSString не используется (но будет очищена с помощью автоматического выпуска).
Я вижу, что вы получаете доступ к filePath
только по его имени, а не через метод получения / установки. Если вы используете self.filePath
, например
self.filePath = [NSString stringWithFormat:@"..."]; // or any other string
тогда оператор сохранения / деблокирования корректно обрабатывается установщиком. Чтобы быть точным, разница между filePath = ...
и self.filePath = ...
заключается в том, что последний будет сохранять объект, который вы назначаете.
Вы действительно не должны смотреть на retainCount для отладки вещей, если вы не очень уверены, что знаете, что происходит под какао-капюшоном.