重新初始化NSArray

时间:2013-07-12 07:08:10

标签: ios objective-c nsarray

如果我要用其他值重新初始化NSArray,这样做是对的吗?

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

感谢

4 个答案:

答案 0 :(得分:3)

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

它与重新初始化不完全相同,因为你扔掉了对象并得到了一个新的,但是NSArray是不可变的,所以这是重新初始化"的唯一方法。它

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分: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];

我希望它可以帮助你:)