[英]Adding custom defined objects to NSMutableArray overwrite the whole array
-(id) initWithData:(NSString *)lastName: (NSString *)firstName{
self->firstname = firstName;
self->lastname = lastName;
return self;
}
-(void) printData {
NSLog(@"firstname: %@", firstname);
NSLog(@"lastname: %@", lastname);
}
所以每当我使用上面的init函数创建一个新对象时。 然后使用addObject函数将对象添加到NSMutableArray。
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循环,或者有两个以上的对象(在打印时的所有值)都转到了objectArray中最后添加的对象的值,也会发生这种情况。 让我知道是否缺少任何信息。 有什么我想念的吗?
修复您的initWithData:lastName:
实现,如下所示:
-(id) initWithData:(NSString *)lastName: (NSString *)firstName
{
self = [super init];
if ( nil != self ) {
self->firstname = [firstName retain];
self->lastname = [lastName retain];
}
return self;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.