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