如何重新分配数组

时间:2014-01-15 01:51:53

标签: ios objective-c

我需要按如下方式重新填充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;
}

3 个答案:

答案 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;
}