Hello, I have a question about release/retain and properties. Now I get the whole "if you allocate it, you have to release it", but with properties I need some clarification. I'm using an AVAudioPlayer to play a sound, and I'm initializing it in the viewDidLoad by calling a routine to get the sound. Some sample code:
In my view controller .h file : @interface AudioPlayerViewController : UIViewController { AVAudioPlayer *audioPlayer; } @property (retain) AVAudioPlayer *audioPlayer; In the .m file: @synthesize audioPlayer; in viewDidLoad: audioPlayer = [self getSoundFile:"soundfile.wav"]; ... in getSoundFile routine: AVAudioPlayer *snd; ... snd = [[[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error] autorelease]; ... return snd; Now (I did copy the code from a sample, that had the autorelease in it) if I try to play the sound, it crashes. If I remove the autorelease it's fine. I just want to understand what's going on. I know using the (retain) in the property declaration will use retains when setting the property. Assuming the autorelease is not there, in my getSoundFile routine, the alloc/init would return a retained object (correct?) Then in my viewDidLoad routine when I get the sound, does the assignment do another retain? Should I keep the autorelease and assign it with: audioPlayer = [[self getSoundFile:"soundfile.wav"] retain]; (side note... should that be self.audioPlayer = ... ? I keep getting confused with accessors vs. ivars too ;) ) I hope that made sense :) Thanks for any input / hints. _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com