mutableCopyWithZone, скопировать NSMutableArray? - PullRequest
3 голосов
/ 06 января 2010

Я пытаюсь создать mutableCopy объекта планеты, который содержит 5 переменных экземпляра (одна из них - NSMutableArray из строковых литералов. Моя проблема в том, что я не уверен, как установить данные newPlanet> в копию себя> данные, это имеет смысл?

-(id) mutableCopyWithZone: (NSZone *) zone {
    Planet *newPlanet = [[Planet allocWithZone:zone] init];
    NSLog(@"_mutableCopy: %@", [newPlanet self]);
    [newPlanet setName:name];
    [newPlanet setType:type];
    [newPlanet setMass:mass];
    [newPlanet setIndex:index];

    // NSMutableArray *data; HOW TO: newPlanet>data = self>data? 

    return(newPlanet);
}

EDIT_001:

Основываясь на комментариях Chuck & bbum, я обновил свой метод и добавил следующее ...

@property(retain) NSMutableArray *data;
@synthesize data;

.

-(id) mutableCopyWithZone: (NSZone *) zone {
    Planet *newPlanet = [[Planet allocWithZone:zone] init];
    NSLog(@"_mutableCopy: %@", [newPlanet self]);
    [newPlanet setName:name];
    [newPlanet setType:type];
    [newPlanet setMass:mass];
    [newPlanet setIndex:index];

    NSMutableArray *copiedArray = [[self data] mutableCopyWithZone:zone];
    [newPlanet setData: copiedArray];
    [copiedArray release];

    return(newPlanet);
}

высоко ценится

* 1014 Гэри *

Ответы [ 3 ]

6 голосов
/ 06 января 2010

Ничего особенного здесь. Примерно так:

NSMutableArray *copiedData = [[self data] mutableCopyWithZone:zone];
newPlanet.data = copiedData;
[copiedData release];
2 голосов
/ 06 января 2010

Вы, вероятно, хотите

newPlanet->data = [data mutableCopyWithZone:zone];

Имейте в виду, что если вы используете установщик (такой как точка доступа или setData:), то вы будете запускать другое сохранение, поэтому вы должны обработать это соответствующим образом.

0 голосов
/ 06 января 2010

Вы пробовали что-то вроде [newPlanet setData:[[self data] mutableCopyWithZone:zone]];?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...