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