You've only created one person. Try this:
list = [[NSMutableArray alloc] init];
Person *person = [[Person alloc] init];
// Create person 1
person.name = @"Fred";
person.gender = @"unknown";
// Append to array
[list addObject:person];
[person release];
// Create person 2
Person *person2 = [[Person alloc] init];
person2.name = @"Bob";
person2.gender = @"male";
// Append to array again
[list addObject:person2];
[person release];
The issue here is that when you added the first person to the array, and then modified the original object, the object is also modified in the array --- you need to instantiate a new version of the "person" object and modify it.
If you want to create many, many people, I suggest using a for loop:
NSArray *names = [NSArray arrayWithObjects:@"Fred", @"Bob"];
NSArray *genders = [NSArray arrayWithObjects:@"unknown", @"male"];
for (int i = 0; i<[names count]; i++) {
Person *person = [[Person alloc] init];
person.name = [names objectAtIndex:i];
person.gender = [genders objectAtIndex:i];
[list addObject:person];
[person release];
}