//header file has appropriate declarations but not included here: #import "AddressCard.h" @implementation AddressCard; -(NSString *) name { return name; } //Recommended code: -(void) setName: (NSString *) theName { [name release] name = [[NSString alloc] initWthString: theName]; } //Incorrect code according to Kochan: -(void) setName: (NSString *) theName { [name release] name = [NSString stringWthString: theName]; } //rest of class implementation code snipped @end -(void) setName: (NSString *) theName { if (theName == name) return; // if they're equal, no need to do anything further [name release]; name = [theName copy]; // sets name to nil if theName is nil } name = [[NSString stringWithString: theName] retain];