NSMutableArray, добавление / удаление объектов? - PullRequest
0 голосов
/ 24 февраля 2010

Это правильный способ вытолкнуть объекты за пределы массива. Мне было просто любопытно, так как я думал, что может быть метод для NSMutableArray, который возвращает сохраненный объект. Просто любопытно, правильно ли я понимаю?

// PUTTING OBJECTS IN
NSMutableArray *fgStore = [[NSMutableArray alloc] init];
for(int counter=1; counter<=5; counter++) {
    NSString *dataValue = [[NSString alloc] initWithFormat:@"DATA%d", counter];
    [fgStore addObject:dataValue];
    [dataValue release];
}

// TAKING OBJECTS OUT
NSString *saveMe = [[fgStore objectAtIndex:0] retain];
[fgStore removeObjectAtIndex:0];    
NSLog(@"SAVE: %@", saveMe);
...
...
[fgStore release];
[saveMe release];

* 1004 Гэри *

Ответы [ 2 ]

2 голосов
/ 24 февраля 2010

Это именно то, как я бы это сделал, я не думаю, что есть другой. Возвращая сохраненный объект, вы нарушаете одно из основных правил управления памятью Какао: большую часть времени вы владеете только объектами, возвращенными методами init…, и должны сохранять остальные.

1 голос
/ 24 февраля 2010

Этот код выглядит хорошо. Единственное, что вы можете иметь в виду, это то, что вы можете использовать авто-релиз, чтобы избежать явных выпусков, когда вы закончите. Например:

for(int counter=1; counter<=5; counter++) {
    NSString *dataValue = [[[NSString alloc]
                             initWithFormat:@"DATA%d", counter] autorelease];
    [fgStore addObject:dataValue];
}

Я не верю, что существует какой-либо метод NSMutableArray, который возвращает сохраненный объект. Помните, что методы, которые возвращают сохраненные значения, имеют имена, которые начинаются с alloc, new или copy.

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