Добавление пользовательских объектов в NSMutableArray перезаписывает весь массив - PullRequest
0 голосов
/ 07 декабря 2011
-(id) initWithData:(NSString *)lastName: (NSString *)firstName{
self->firstname =  firstName;
self->lastname =  lastName;

return self;
}


-(void) printData {
NSLog(@"firstname: %@", firstname);
NSLog(@"lastname: %@", lastname);
}

поэтому всякий раз, когда я создаю новый объект, используя вышеупомянутую функцию init. И добавьте объекты в NSMutableArray, используя функцию addObject.

NSMutableArray *objectArray = [[NSMutableArray alloc] init];

CustomObject *tempObject = [[CustomObject alloc] initWithData: @"smith": @"john"];
CustomObject *tempObjectb = [[CustomObject alloc] initWithData: @"brown": @"william"];
[objectArray addObject:tempObject];
[objectArray addObject:tempObjectb];

[[objectArray objectAtIndex:0] printData];
[[objectArray objectAtIndex:1] printData];

объекты с индексами 1 и 0 всегда равны любому объекту, который был добавлен в массив последним.
Это также происходит, если я использую цикл for или имею более 2 объектов, все значения при печати обращаются к значениям последнего добавленного объекта в objectArray. Дайте мне знать, если есть какая-либо информация, которую я пропускаю. Есть что-то, чего мне не хватает?

1 Ответ

0 голосов
/ 07 декабря 2011

Исправьте вашу initWithData:lastName: реализацию следующим образом:

-(id) initWithData:(NSString *)lastName: (NSString *)firstName
{

self = [super init];
if ( nil != self ) {
  self->firstname =  [firstName retain];
  self->lastname =  [lastName retain];
}

return self;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...