我需要按如下方式重新填充NsMutableArray。我想知道这样的安全问题是否存在。提前致谢!
int main(int argc, const char * argv[])
{
@autoreleasepool
{
NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:4];
[myArray addObject:@"something1"];
[myArray addObject:@"something2"];
[myArray addObject:@"something3"];
[myArray addObject:@"something4"];
myArray = [NSMutableArray arrayWithCapacity:3];
[myArray addObject:@"somethingNew1"];
[myArray addObject:@"somethingNew2"];
[myArray addObject:@"somethingNew3"];
}
return 0;
}
答案 0 :(得分:2)
[myArray removeAllObjects];
//添加内容
答案 1 :(得分:1)
这对我来说没问题。
如果你正在使用ARC,那么一切都已经完成了。
如果您正在使用手动引用计数,那么您永远不会保留任何内容,因此一旦autorelease
范围关闭,它们就会被释放。
答案 2 :(得分:0)
首先,[NSMutableArray arrayWithCapacity:]
并非真的有必要。只需alloc
和
init
会做到这一点。从这里,您可以添加对象,它将自动调整大小。使用-removeAllObjects
方法将清除阵列并安全释放所有对象。之后,只需使用-addObject:
添加任何新内容。
int main(int argc, const char * argv[])
{
@autoreleasepool
{
NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject:@"something1"];
[myArray addObject:@"something2"];
[myArray addObject:@"something3"];
[myArray addObject:@"something4"];
[myArray removeAllObjects];
[myArray addObject:@"somethingNew1"];
[myArray addObject:@"somethingNew2"];
[myArray addObject:@"somethingNew3"];
}
return 0;
}