Вы должны использовать свойства, чтобы предотвратить появление подобных ошибок. Если вы определяете песню как ...
@property(nonatomic, retain) Song *song;
...
@synthesize song;
... и используйте его вот так ...
self.song = [читатель читает песню];
... target-c управляет удержанием и освобождением для вас, пока вы не вызовете dealloc.
Не связанная с вами основная проблема, метод, вызываемый таймером, должен иметь вид ...
-(void) arbitraryMethodName:(NSTimer *) aTimer;
... или это не всегда может быть вызвано должным образом.