Я изучаю управление памятью и создал небольшую программу, которая управляет табличным объектом.
Вот мой .h:
@interface Person : NSObject {
NSString *firstName;
NSString *lastName;
}
@property (readwrite, copy) NSString *firstName;
@property (readwrite, copy) NSString *lastName;
Вот мой .m:
- (IBAction)clic2:(id)sender {
Person *pers = [[Person alloc]init];
NSMutableArray *myarray = [[NSMutableArray alloc] init];
[pers setFirstName:@"FN 1"]; // = pers.firstName
[pers setLastName:@"LN 1"]; // = pers.lastName
[myarray addObject:pers];
[pers setFirstName:@"FN 2"];
[pers setLastName:@"LN 2"];
[myarray addObject:pers];
[pers release];
for(int i = 0; i < [myarray count]; i++)
{
pers = [myarray objectAtIndex:i];
NSLog(@"%d %@ %@ %@", [myarray objectAtIndex:i], pers, pers.firstName, pers.lastName);
}
}
- (void)dealloc
{
[firstName release];
firstName = nil;
[lastName release];
lastName = nil;
[super dealloc];
}
а это мой NSLog
2011-04-28 21:40:11.568 temp[4456:903] 4495296 <Person: 0x1004497c0> FN 2 LN 2
2011-04-28 21:40:11.571 temp[4456:903] 4495296 <Person: 0x1004497c0> FN 2 LN 2
Как видите, сохраненная информация одинакова; кажется, это потому, что myarray
всегда хранит один и тот же адрес памяти / содержимое человека в массиве.
Из этого я понимаю, что при изменении содержания pers
при втором вызове система также изменит информацию в myarray
.
Как мне это сделать, чтобы не перезаписывать данные?
Спасибо за ваши ответы.
РЕДАКТИРОВАТЬ: Этот пример для 2 человек, но идея заключается в управлении неограниченное число, данное
EDIT2: Спасибо всем за объяснения по управлению памятью в этом случае