0

如果我必须用其他值重新初始化 NSArray,这样做是否正确?

NSArray *array = [[NSArray alloc] initWithObjects:obj1, obj2, nil];
// ...
// some code
// ...
array = [[NSArray alloc] initWithObjects:obj3, obj4, nil];

谢谢

4

4 回答 4

3

是的,这是绝对正确的。新对象与以前的对象完全不同。对象指针现在指向一个新对象,而旧对象将被释放,因为您使用的是 ARC。

它与重新初始化并不完全相同,因为您丢弃了对象并获得了一个新对象,但是 NSArray 是不可变的,因此这是“重新初始化”它的唯一方法。

于 2013-07-12T07:18:41.647 回答
2

您的代码不会重新初始化NSArray. 它只是为变量分配了一个新对象array。没关系。

于 2013-07-12T07:19:50.977 回答
1

您可以使用相同的名称重新初始化 NSArray,您不会收到任何错误或警告,但最新的对象会被之前的对象替换。之前的对象会被覆盖。为此,您必须使用 ARC,否则会出现内存问题。

于 2013-07-12T07:21:35.937 回答
1

我认为这段代码可以帮助你。至少,我认为这可能是一个合适的解决方案,特别是如果您使用 ARC:

NSObject *obj1 = [NSNull null]; NSObject *obj2 = [NSNull null];

NSMutableArray *arrayObj = [NSMutableArray arrayWithObjects:obj1, obj2, nil];

[arrayObj removeAllObjects];

arrayObj = [NSMutableArray arrayWithObjects:obj1, obj2, nil];

我希望它可以帮助你:)

于 2013-07-12T09:47:03.010 回答