NSMutableArray,添加/删除对象?

时间:2010-02-24 16:57:31

标签: objective-c cocoa-touch

这是从数组前面弹出对象的正确方法吗?我只是好奇,因为我认为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];

加里

2 个答案:

答案 0 :(得分:2)

这正是我做的方式,我不认为还有另一种方式。通过返回一个保留的对象,你将破坏Cocoa内存管理的一个主要规则:大多数时候你只拥有init…方法返回的对象,并且必须保留其余的。

答案 1 :(得分:1)

该代码看起来很好。您可能想要记住的唯一事情是,您可以使用自动释放来避免在完成后显式发布。例如:

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

我不相信有任何返回保留对象的NSMutableArray方法。请记住,返回保留值的方法的名称以alloc,new或copy开头。