Forgive me if I am misunderstanding your question, but perhaps you may need to rewrite your setName method. Instead of returning (void) you may want to try:
- (id) setName: (NSString*) name;
You see, the call to [name retain] returns a type of (id), which you have released in the call to...