簡體   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