繁体   English   中英

将自定义定义的对象添加到NSMutableArray会覆盖整个数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM