I have a method which runs this:
Track* track = [[Track alloc] init:[obj objectForKey:@"PersistentID"] :[obj objectForKey:@"Name"] :[obj objectForKey:@"Artist"] :(NSInteger*)[obj objectForKey:@"Total Time"] :(NSInteger*)[obj objectForKey:@"Play Count"]];
[self setCurrentTrack:(Track*) track];
[track release];
Do I have to release track?
Yes. You are responsible for release’ing an object anytime you own the object. You own an object any time you send it an alloc, new, copy or retain message. Your currentTrack property should retain the track.